如何避免在asp.net/ajax中重置计时器

时间:2014-08-22 00:04:00

标签: asp.net timer asp.net-ajax

我使用updatepanel和timer每隔15秒显示一次警报。当我没有点击页面中的任何内容时它工作正常。它每15秒显示一次警报。我在此更新面板外面有一个按钮。每当我点击此按钮时,计时器重置并且它不会每15秒显示一次警报。如果我停止点击按钮,它会在15秒后开始显示警报。基本上,当我点击某个按钮时,计时器会重置间隔。我想显示警报,无论是否点击按钮。请帮帮我。

ASPX页面中的

     <asp:ScriptManager ID="ScriptManager1" runat="server">

       </asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"      
         ViewStateMode="Enabled">
  <Triggers>
  <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
   </Triggers>
 </asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" Interval="15000" OnTick="Timer1_Tick">
</asp:Timer>

在.CS页面

public void Timer1_Tick(object sender,EventArgs e)         {

       ScriptManager.RegisterClientScriptBlock(UpdatePanel1, typeof(Page), "ToggleScript", "  
          alert('Hello')", true);

    }

1 个答案:

答案 0 :(得分:0)

原因看起来你的按钮发回了一个帖子而你的计时器在更新面板的外面,所以它会重置。

如果您可以将按钮放入另一个更新面板,则可以使用。

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ViewStateMode="Enabled">
    <ContentTemplate>
        <asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick="Timer1_Tick">
        </asp:Timer>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

    </ContentTemplate>
</asp:UpdatePanel>