我需要完成的是每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函数。
上述代码有什么问题?
答案 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按您设置的时间间隔刷新页面。
答案 2 :(得分:0)
答案 3 :(得分:0)
在网页上,您无法在服务器端设置计时器,它必须在客户端上完成,例如:
window.setInterval
函数每隔5秒调用linkbutton的click()
方法。