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 秒后触发。

上面的代码有什么问题?

4

4 回答 4

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);
于 2013-10-05T20:25:18.473 回答
1

System.Timers.Timer 无法与网页对话;为此,您需要使用实际的Timer 控件,该控件使用 Javascript 在您设置的时间间隔内刷新页面。

这里有一个关于 Timer 控件的演练

于 2013-10-05T20:45:40.373 回答
0

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

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

只需添加这一行代码:

myTimer.Start();

启用后。

更新

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

于 2013-10-05T20:20:17.250 回答