0

我需要一个客户端脚本来确认 Timer 的 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 分钟显示一次模态确认有疑问。我同意这不利于可用性,但我无法更改设计。


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

4

2 回答 2

0

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

例如:

  1. 获得对您的计时器的参考。(类似于$find(‘&lt;%= Timer1.ClientID %>’);:)
  2. 停止计时器。
  3. 创建一个具有相同间隔的新计时器。
  4. 执行您的计时器并导致条件。
  5. 根据您的条件的返回值..您可以将服务器生成的计时器间隔设置为 ~0 并启动/停止。

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

于 2009-01-13T16:58:02.027 回答
0

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

于 2009-02-23T21:55:18.717 回答