我怎样才能有一个ascx回发并每隔X秒自动刷新一次?

时间:2009-11-13 23:30:54

标签: asp.net javascript asp.net-ajax timer ascx

我有一个ascx控件绑定到具有频繁更改数据的数据源。是否有一种快速方法可以每隔X秒重新启动一次ascx控制回发,重新绑定和刷新。 ascx控件位于更新面板中。

3 个答案:

答案 0 :(得分: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.
}

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

答案 1 :(得分:2)

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

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