2013-10-05 31 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秒。