C#如何在计时器上引发回发。勾选事件?

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

我使用UpdatePanel,其中包含DataList元素。我想每10秒更新一次数据库中的内容。我注意到更新只发生在回发之后。我是这样做的

    <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();
}