2009-11-13 271 views

回答

5

,因为你已经在使用它使用来自AJAX工具包的定时器控制:

<asp:Timer ID="tmrPolling" runat="server" Interval="10000" ontick="tmrPolling_Tick"></asp:Timer> 

添加一个触发器到您的更新面板,如:

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="tmrPolling" EventName="Tick" /> 
</Triggers> 

然后,只需执行tmrPolling_Tick处理程序:

protected void tmrPolling_Tick(object sender, EventArgs e) 
{ 
    // Change your update panel controls and data here. 
} 

请勿在更新面板内容ar中添加计时器EA。

+0

+1你打败了我,并有了更好的答案。 – 2009-11-13 23:45:16

2

在客户端脚本中,您可以创建一个计时器并调用__doPostBack()来强制刷新更新面板。请see this article for details

0

为了清晰/懒惰而保留代码的重复性。

function pageLoad(sender, args) 
{ 
    setTimeout(refreshPanel, 5000); // 5 seconds 
} 

function requestEnd(sender, args) 
{ 
    // Check for AJAX request errors if you'd like 
    setTimeout(refreshPanel, 5000); // 5 seconds 
} 

function refreshPanel() 
{ 
    __doPostBack('UpdatePanelIDHere', '');" 
} 

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestEnd); 
+0

我更喜欢Kelsey的解决方案。少手工JavaScript疯狂 – zincorp 2009-11-13 23:51:14

+0

为什么不只是'setInterval' – 2009-11-14 00:00:19