在更新面板中更新控件

时间:2011-08-22 19:52:40

标签: asp.net ajax updatepanel

我使用带有一些控件的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";

        }

1 个答案:

答案 0 :(得分:0)

如果您正在进行第二次回发(通过单击第二个按钮),而客户端(您的浏览器)正在等待完成第一个请求。一旦您单击第二个按钮,您的第一个请求就会被客户端中止。所以你只看到第二次请求的结果。

在您的示例中,如果先点击第二个按钮然后再点击第一个按钮,您将在label1上看到值,而不是在label2上。

希望这有帮助。

即时