为updatepanel编写代码触发器.C#-ASP.NET
本文关键字:触发器 C#-ASP NET 代码 updatepanel | 更新日期: 2023-09-27 17:57:59
我有这个UpdatePanel,我想在我的网站上使用。基本的想法是,用户点击一个链接,在服务器上启动一个服务,该服务将更改数据库。
所以我想写的是一个方法,如果数据库更新,它将返回true或false。该方法应按定时间隔运行。如果数据库已经更新,它将返回true,这将触发UpdatePanel进行更新。
我知道你可以通过控件添加触发器。但是,通过代码也可以做到这一点吗?其想法是,如果用户在开始操作后仍停留在页面上,那么当方法返回true时,他将看到结果。如果用户离开页面,他当然什么也看不到。
如果这不是使用这个的权利,那么请这样说。
任何评论都将不胜感激!谨致问候,Floris
我建议您使用asp:Timer
您可以将此计时器放置在更新面板的内部或外部。如果你把它放在更新面板里,你就不必自己处理触发器了。upatepanel中的每个post都将变为Async。但如果你把它放在一边,你必须分配触发器。
以下是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" />
而把它放在更新面板里更容易:
<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>
现在在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";
}
在本例中,5秒钟后,屏幕上将出现一个tadaaaah。您应该在此事件处理程序中更新面板。即设置标签的文本。我希望我答对了你的问题。
您可以检查值是否在数据库中更新,然后如果更新了,您应该在if部分中放入以下代码
if(条件){
//Creates a new async trigger
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
//Sets the control that will trigger a post-back on the UpdatePanel
trigger.ControlID = "lnkbtncommit";
//Sets the event name of the control
trigger.EventName = "Click";
//Adds the trigger to the UpdatePanels' triggers collection
pnlUpdate.Triggers.Add(trigger);
}