这里我需要先调用一个javascript函数,一段时间后我需要在同一个按钮点击事件上调用一个c#函数。有可能吗?
<asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0"
OnClientClick="JavaScript:exportCharts('JPG');" OnClick="imgBTNExportPPT_Click" ImageUrl="~/Images/PPT_icon.png" />
有什么建议吗?
答案 0 :(得分:2)
Javascript函数在客户端执行。 C#功能在服务器端执行。没有进一步的临时或异步请求,客户端onClick处理函数将在服务器端onClick处理函数之前执行。
如果我找到你,你想要导出的图像在客户端处理后可用,不是吗?因此,只有在客户端处理完成后才执行服务器端处理。
没有AJAX?看看here。
这里有一些代码:
<script>
function exportCharts(input)
{
//business here
if(business works)
return true;
else
return false;
}
</script>
<asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0" ImageUrl="~/Images/PPT_icon.png"
OnClientClick="return exportCharts('JPG');"
OnClick="imgBTNExportPPT_Click" />
仅当exportCharts返回true时,才会执行服务器端imgBTNExportPPT_Click处理程序。
答案 1 :(得分:1)
为什么不通过Ajax调用调用服务器端方法
您可以将其放在JavaScript方法的末尾
答案 2 :(得分:1)
如果“经过一段时间”,您的意思是“在3秒后必须执行某项操作”,那么您可以使用setTimeout setTimeout(functionToCallAfterIntervalToWait, intervalToWait)
如果要调用服务器端方法,可以在functionToCallAfterIntervalToWait中使用ajax调用 - 如果需要有关ajax调用的帮助,请留言
有关如何从javascript调用asp.net服务器方法的示例,请参阅this blogpost(google从javascript调用asp .net服务器方法以获取更多示例/教程)
假设您使用的是jQuery,您可以编写(使用.ajax()):
$.ajax( {
url:"yourAspxPage/NameofTheMethodToCall",
data: {"nameOfParameter": valueOfParameter},
success: function (data) {
//this function will be called after the server side function executes successfuly
});
如果你想在其他客户端操作之后调用此函数,请确保在其他命令下面(之后)写入。