2013-10-08 277 views
1

我在UpdatePanel內有一個計時器,每秒刷新一次面板。問題是,每當定時器事件被觸發時,頁面被重新加載並且所有變量都被重新初始化。停止頁面重新加載

如何在每次timere事件觸發時停止重新加載頁面?

我的ASP代碼:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False"> 
    <Triggers> 
    </Triggers> 
     <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
      <ContentTemplate> 
        <asp:Timer ID="Timer1" runat="server" Enabled="false" Interval="1000"> 
        </asp:Timer> 
        <asp:ScriptManager ID="ScriptManager1" runat="server"> 
        </asp:ScriptManager> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

編輯:

網頁的加載代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (File.Exists("D:\\server\\a.txt")) 
     { 
      logged = File.ReadAllText("D:\\server\\a.txt"); 
     } 
     if (logged != "1") 
     { 
      //update some text labels 
     } 
     else 
     { 
      Timer1.Interval = 1000; 
      Timer1.Enabled = true; 
     } 
    } 
+0

http://stackoverflow.com/questions/9260455/asp-timer-control-is-refreshing-the-whole-page – Bobby5193

+0

發佈您的'Page_Load'代碼。 –

+2

您在發佈的代碼中有幾個標籤關閉錯誤。 – EkoostikMartin

回答

4

UpdatePanel•限制客戶端的更新和減少網絡流量,但他們仍然產生完整的服務器端更新。導致回發的客戶端定時器將導致完整的服務器端刷新。您將需要保留您的變量,所以請考慮使用ViewState。

如果您想消除服務器端更新,您需要攔截回發並完全處理客戶端上的客戶端更新。