2013-10-05 53 views
0

我需要完成的是每5秒鐘更新一次標籤。爲此,我使用UpdatePanel控件。以下是標記:在每個時間間隔後更新標籤值

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
         <ContentTemplate> 
          <asp:Label ID="NewsFeed_Item1_Name" runat="server" Text=""></asp:Label> 
         </ContentTemplate> 
        </asp:UpdatePanel> 

在服務器端:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // Create a timer 
    myTimer = new System.Timers.Timer(); 
    // Tell the timer what top do when it elapses 
    myTimer.Elapsed += new ElapsedEventHandler(UpdateNewsFeed); 
    // Set it to go off every five seconds 
    myTimer.Interval = 5000; 
    // And start it   
    myTimer.Enabled = true; 
} 

private void UpdateNewsFeed(object sender, ElapsedEventArgs e) 
{ 
    //newsfeedCounter and dt are global variables 
    if (newsfeedCounter >= dt.Rows.Count) 
     newsfeedCounter = 0; 
    string name = dt.Rows[newsfeedCounter]["Name"].ToString(); 
    NewsFeed_Item1_Name.Text = name; 
    newsfeedCounter++; 
} 

但不知何故UpdateNewsFeed功能是不是每5秒後觸發。

上述代碼有什麼問題?你啓用後

myTimer.Start(); 

+0

我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

只需添加的這一行代碼。

UPDATE

你爲什麼不使用timer_tick()事件?你有一些樣品here,它可以幫助你

+0

沒有,但沒有發生。同樣的問題! – Azeem

+0

'timer_tick()'事件在asp.net定時器中不可用。這是爲Windows窗體 – Shaharyar

1

這是你的問題的工作解決方案。你只需要添加以下代碼行中Page_Load()方法:

//add timer to the webform so we can get the ControlID 
this.Form.Controls.Add(myTimer); 

//An AJAX control to update the web UI 
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 

//set timer to async it 
trigger.ControlID = myTimer.UniqueID; 
trigger.EventName = "Tick";  

//now add the timer trigger to get its updates 
UpdatePanel1.Triggers.Add(trigger); 
+0

我已添加myTimer.Start(); – Azeem

+0

在您的'UpdateNewsFeed'方法中添加一個簡單的'Response.Write(「something」);'行來檢查定時器是否在滴答滴答 – Shaharyar

+0

是的,我已經按照您的建議做了,但重定向沒有發生。 .. – Azeem

0

開,則不能設置在服務器端的計時器的網頁,它必須在客戶端如完成:

  1. 設置一個隱形的觸發控制(例如更新面板中的一個沒有文本集的鏈接按鈕)。
  2. 在服務器端的「點擊」該控件的事件添加代碼讀取飼料和更新標籤
  3. 客戶端 JavaScript中使用window.setInterval函數來調用的LinkBut​​ton的click()方法每隔5秒。