我使用带有一些控件的updatepanel,我点击按钮时,创建一个睡眠。在这个时候我点击第二个按钮,按钮处理程序成功执行异步。但其中一个标签不更新?
我在更新面板中有两个标签,当btnPostF按钮单击然后按btnPostS按钮时, 只有lable2才能在更新面板中更新而lable2不会更新!!
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<asp:UpdatePanel ChildrenAsTriggers="true" ID="UpdatePanel1" runat="server" >
<contenttemplate>
<asp:Button runat="server" Text="PostBackFirst" ID="btnPostF"
onclick="btnPostF_Click"/>
<asp:Button runat="server" Text="PostBackSecond" ID="btnPostS"
onclick="btnPostS_Click"/>
<asp:Button runat="server" Text="AbortPostBack" ID="btnAbort"
OnClientClick="Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
alert('Postback Cancelled');"/>
<asp:Label ID="Label1" runat="server" Text="">
<asp:Label ID="Label2" runat="server" Text="">
</contenttemplate>
</form>
</body>
protected void btnPostF_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(4000);
Label1.Text = "PostBack 1 Completed";
}
protected void btnPostS_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(4000);
Label2.Text = "PostBack 2 Completed";
}
答案 0 :(得分:0)
如果您正在进行第二次回发(通过单击第二个按钮),而客户端(您的浏览器)正在等待完成第一个请求。一旦您单击第二个按钮,您的第一个请求就会被客户端中止。所以你只看到第二次请求的结果。
在您的示例中,如果先点击第二个按钮然后再点击第一个按钮,您将在label1上看到值,而不是在label2上。
希望这有帮助。
即时