2009-01-13 46 views
0

我需要一个客户端脚本来确认定时器的OnTick事件可以继续。如何在System.Web.UI.Timer之前运行JavaScript OnTick?

如何在Timer1回发之前调用CanContinue()
如果用户选择取消,我如何取消回发?

<%@ Page Language="C#" %> 
<script runat="server"> 
    protected void Timer1_OnTick(object sender, EventArgs e) 
    { 
     Response.Write("Last Postback: " + DateTime.Now.ToString()); 
    } 
</script> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Timer Test</title> 
    <script type="text/javascript" language="javascript"> 
     function CanContinue() { 
      return confirm('The page is requesting new data. Ok or Cancel?'); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_OnTick" Interval="300000" /> 
    </form> 
</body> 
</html> 

注意:有些读者可能会就显示每x分钟模态确认。我同意这对可用性来说很差,但我不能改变设计。


更新:我决定不使用计时器毕竟。有关替代解决方案的详细信息,请参阅this post

回答

0

毕竟我决定不使用定时器。有关替代解决方案的详细信息,请参阅this post

0

我不知道是否有办法与计时器生成的调用服务器操作的方法配合使用。但是,您可以获得对javascript组件的引用并启动/停止或更改时间间隔。考虑到这一点,你可以做一些讨厌的黑客来获得你想要的功能。

例如:

  1. 增益到您的计时器的参考。 (如:$find(‘<%= Timer1.ClientID %>’);
  2. 停止计时器。
  3. 用相同的时间间隔创建一个新的定时器。
  4. 执行您的计时器并导致条件。
  5. 根据条件的返回值,可以将服务器生成的定时器间隔设置为〜0并启动/停止。

这不是一个优雅的解决方案,但我不能说我曾经使用内置的asp.net定时器,所以我不能提供太多的见解。

相关问题