每个时间间隔后更新标签值

时间:2013-10-05 20:16:46

标签: c# asp.net updatepanel

我需要完成的是每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++;
}

但不知何故,每隔5秒就不会触发UpdateNewsFeed函数。

上述代码有什么问题?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

System.Timers.Timer无法与网页通话;为此,您需要使用实际的Timer control,它使用Javascript按您设置的时间间隔刷新页面。

有一个walkthrough on the Timer control available here

答案 2 :(得分:0)

只需添加以下一行代码:

myTimer.Start();

启用后。

<强>更新

为什么不使用timer_tick()事件?你有一些样本here,它可以帮助你

答案 3 :(得分:0)

在网页上,您无法在服务器端设置计时器,它必须在客户端上完成,例如:

  1. 在更新面板内设置一个不可见的触发控件(例如没有文本设置的链接按钮)。
  2. 在该控件的服务器端“OnClick”事件中添加代码以读取提要和更新标签
  3. 客户端 JavaScript中,使用window.setInterval函数每隔5秒调用linkbutton的click()方法。