如何在按钮单击中设置事件的优先级?

时间:2012-06-27 08:07:56

标签: c# javascript asp.net

这里我需要先调用一个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" />

有什么建议吗?

3 个答案:

答案 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
});

如果你想在其他客户端操作之后调用此函数,请确保在其他命令下面(之后)写入。