I have an ascx control bound to a datasource with frequently changing data. Is there a quick way to have an ascx control postback, rebind and refresh itself every X seconds. The ascx control is in an update panel.
views:
486answers:
3
+3
A:
Use a timer control from the AJAX toolkit since you are already using it:
<asp:Timer ID="tmrPolling" runat="server" Interval="10000" ontick="tmrPolling_Tick"></asp:Timer>
Add a trigger to your update panel like:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tmrPolling" EventName="Tick" />
</Triggers>
Then just implement the tmrPolling_Tick
handler:
protected void tmrPolling_Tick(object sender, EventArgs e)
{
// Change your update panel controls and data here.
}
Do not add the timer within your update panel content area.
Kelsey
2009-11-13 23:42:52
+1 You beat me to it, and with a better answer, too.
Jerry Bullard
2009-11-13 23:45:16
+2
A:
In a client script, you can create a timer and call __doPostBack() to force the update panel to refresh. Please see this article for details.
Jerry Bullard
2009-11-13 23:44:19
A:
Repetition of code maintained for clarity/laziness.
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);
zincorp
2009-11-13 23:46:46