2009-04-09 71 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是最簡單的解決方案。