2009-04-09 60 views
1

我有一个ASP.Net网页含有一个ASP一个asp.net Timer控件:定时器控制禁用和重新启用使用JavaScript

<asp:Timer ID="TimerRefresh" runat="server" Interval="5000" Enabled="true" OnTick="TimerRefresh_Tick"> 
</asp:Timer> 

这是链接到由一个asp:UpdatePanel的页面,以便页面的特定部分异步刷新。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <div class="TopRow" id="TopRowPlace" runat="server"> 
     ... More HTML Code here... 
     </div> 
    </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="TimerRefresh" /> 
     </Triggers> 
</asp:UpdatePanel> 

的问题是,(由样式的显示属性设置为无)当用户执行某些码动作包含被异步地更新可被隐藏在HTML DIV标记。发生这种情况时,不需要更新内容,因为它是隐藏的。

有没有JavaScript的方法来禁用定时器运行和做异步后回,实际上,当DIV标签再次可见时重新启用它?

+0

面对同样的问题 – 2011-03-02 08:06:32

回答

1

我已经看过一个JavaScript添加到BODY.onload事件的计时器在我的一个WebForms上。我不认为这很容易修改,除非你真的想重写Timer的属性(并将它与更多的客户端JavaScript混合使用)。 所以,在你的DIV会发生什么时,你说:

...这是异步地更新可以 隐藏(...)当用户执行 某些码的动作。

这些操作是否在服务器上执行?如果是这样,您可以禁用服务器上的计时器以响应DIV中的事件。
我有一个带CheckBox的WebForm中的UpdatePanel; CheckBox AutoPostBacks并具有CheckedChanged事件处理程序。如果CheckBox被选中,定时器被启用并且UpdatePanel的内容在每个滴答时间被更新 - 如果CheckBox没有被选中,定时器被禁用。即使定时器被禁用,AutoPostBack也能正常工作。
如果您在DIV中使用客户端JavaScript,我仍然认为AutoPostBack是最简单的解决方案。