C#如何在计时器上引发回发。勾选事件?
我使用UpdatePanel,其中包含DataList元素。我想每10秒更新一次数据库中的内容。我注意到更新只发生在回发之后。我是这样做的C#如何在计时器上引发回发。勾选事件?,c#,asp.net,postback,timer,C#,Asp.net,Postback,Timer,我使用UpdatePanel,其中包含DataList元素。我想每10秒更新一次数据库中的内容。我注意到更新只发生在回发之后。我是这样做的 <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Timer1" EventName
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:DataList ID="lstComputers" runat="server" DataKeyField="ComputerID" DataSourceID="ComputersDataSource"
OnItemDataBound="lstComputers_ItemDataBound" OnItemCommand="lstComputers_ItemCommand">
<HeaderTemplate>
// Header data
</HeaderTemplate>
<ItemTemplate>
// Item template
</ItemTemplate>
</asp:DataList>
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
<img border="0" src="images/loading.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
请记住,所有代码都只在服务器上执行。因此,如果Timer1_Tick()方法正在运行,则计时器将引发回发
运行该方法得到StackOverflowException的原因是它只是无限地调用自身。您需要将更新代码放在该方法中,而不是再次递归调用它。查看setTimeout()和setInterval()javascript函数。这一切都需要在客户端进行,而不是服务器端
protected void Timer1_Tick(object sender, EventArgs e)
{
lstComputers.DataBind();
}
解决了数据重新加载的问题
protected void Timer1_Tick(object sender, EventArgs e)
{
lstComputers.DataBind();
}