为updatepanel编写代码触发器.C# - ASP.NET

Flo*_*ndt 1 c# asp.net updatepanel background

我有我想在我的网站上使用的UpdatePanel.基本上,这个想法是用户点击链接并在服务器上启动将更改数据库的服务.

所以我想写的是一个方法,如果更新数据库将返回true或false.该方法应按时间间隔运行.如果数据库已更新,它将返回true,并应触发UpdatePanel更新.

我知道你可以通过控件添加触发器.但是也可以通过代码这样做吗?这个想法是,如果用户在开始操作后停留在页面上,他将在方法返回true时看到结果.如果用户离开页面,他当然什么也看不见.

如果这不是使用它的权利,请说出来.

任何评论将不胜感激!亲切的问候,Floris

Maz*_*eri 5

我建议你使用asp:Timer

您可以将此计时器放在更新面板的内部或外部.如果你把它放在更新面板中,你不必自己处理触发器.在upatepanel里面的每个帖子都会变成异步.但如果你把它放在一边,你必须分配触发器.

这是您的aspx的示例代码:

     <asp:UpdatePanel runat="server" ID="UPanel1">
        <ContentTemplate>
            <asp:Label ID="MessageLabel" runat="server" ForeColor="Red" Font-Size="X-Large" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Clicked" Interval="1000" /> 
Run Code Online (Sandbox Code Playgroud)

虽然将它放在更新面板中更容易:

<asp:UpdatePanel runat="server" ID="UPanel1">
    <ContentTemplate>
        <asp:Label ID="MessageLabel" runat="server" ForeColor="Red" Font-Size="X-Large" />
         <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Clicked" Interval="1000" />
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

现在在c#方面,你必须像这样编写事件处理程序方法:

        private static int counter = 0;
        protected void Timer1_Clicked(object sender, EventArgs e)
        {
            //DO YOUR WORK WITH DATABASE HERE INSTEAD OF THIS CODE

            if (++counter < 5)
                return;

            MessageLabel.Text = "Tadaaaaaah";
        }
Run Code Online (Sandbox Code Playgroud)

在这个例子中,5秒钟后,屏幕上会出现一个tadaaaah.您应该在此事件处理程序中更新您的面板.即设置Label的文本.我希望我能帮到你.