updateppanel . update()没有实时更新
本文关键字:实时更新 update updateppanel | 更新日期: 2023-09-27 17:53:11
这源于另一个线程....的问题但希望是更专注于一点!
我有一个AJAX更新面板
<asp:UpdatePanel
ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Label ID="lblMessage1" runat="server" />
<asp:Label ID="lblMessage2" runat="server" />
<asp:Button ID="btnTrigger" runat="server" onclick="Button1_Click" style="visibility:hidden"/>
</ContentTemplate>
</asp:UpdatePanel>
后面的代码是
protected void Button1_Click(object sender, EventArgs e)
{
Type cstype = this.GetType();
Label message1 = (Label)(FindControl("lblMessage1"));
Label message2 = (Label)(FindControl("lblMessage2"));
message1.Text = "adam";
UpdatePanel1.Update();
Thread.Sleep(5000);
message2.Text = "adam2";
UpdatePanel1.Update();
我想看到Adam在5秒后出现,然后是Adam2,但是它们同时出现
您在面板上调用Update
,但由于它发生在服务器端,因此两个调用本质上是同时在客户机上执行的。呼叫Update
直到被返回才会生效。您将需要两个单独的调用,或者一个客户端触发器来使其按照您所描述的方式运行。
您提供的代码将设置message1.Text
ON The SERVER中的值,等待5秒ON The SERVER,然后设置message2.Text
ON The SERVER…然后,它会一次性将所有内容发送回客户端。这就是为什么你会看到它同时更新。
如果你想在不同的时间更新它们,你将需要更复杂的编码来调用服务器上的两个独立的东西,并独立显示它们。
为此,您可能需要查看两个<asp:UpdatePanel>
对象,或在javascript/jquery中编写自己的AJAX处理代码
尝试将2个标签,2个按钮分离到2个不同的更新面板中。然后连续5秒一个接一个地触发它们:
HTML:<asp:UpdatePanel
ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Label ID="lblMessage1" runat="server" />
<asp:Button ID="btnTrigger1" runat="server" onclick="Button1_Click" style="visibility:hidden"/>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel
ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Label ID="lblMessage2" runat="server" />
<asp:Button ID="btnTrigger2" runat="server" onclick="Button2_Click" style="visibility:hidden"/>
</ContentTemplate>
</asp:UpdatePanel>
<script>
window.onload = function(){
document.getElementById("<%= btnTrigger1.ClientID %>").click();
// wait 5 secs to trigger 2nd button
setTimeout(function(){
document.getElementById("<%= btnTrigger2.ClientID %>").click();
}, 5000);
};
</script>
CS: protected void Button1_Click(object sender, EventArgs e)
{
Type cstype = this.GetType();
Label message1 = (Label)(FindControl("lblMessage1"));
message1.Text = "adam";
UpdatePanel1.Update();
}
protected void Button2_Click(object sender, EventArgs e)
{
Type cstype = this.GetType();
Label message2 = (Label)(FindControl("lblMessage2"));
message2.Text = "adam2";
UpdatePanel1.Update();
}