0

有人可以解释如何解决这个问题吗?

两个更新面板,两个进度控件,两个命令按钮。

当我单击第一个按钮时,我可以看到第一个异步更新的进度。当我单击第二个命令按钮时 - 如果第一个异步操作仍在进行中,则第一个进度条会消失。如何同时显示两个进度控件。

    <html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>UpdateProgress Tutorial</title>
    <style type="text/css">
    #UpdatePanel1, #UpdatePanel2 { 
      width:300px; height:100px;
     }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <fieldset>
                <legend>UpdatePanel1</legend>
                <asp:Label ID="Label1" runat="server" Text="Panel initially rendered."></asp:Label>
                <br />
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
                    <ProgressTemplate>
                        Panel1 updating...
                    </ProgressTemplate>
                </asp:UpdateProgress>
                </fieldset>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdatePanel ID="UpdatePanel2" runat="server">
            <ContentTemplate>
                <fieldset>
                <legend>UpdatePanel2</legend>
                <asp:Label ID="Label2" runat="server" Text="Panel initially rendered."></asp:Label>
                <br />
                <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
                <asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel2">
                    <ProgressTemplate>
                        Panel2 updating....
                    </ProgressTemplate>
                </asp:UpdateProgress>
                </fieldset>
            </ContentTemplate>
        </asp:UpdatePanel>

    </div>
    </form>
</body>
</html>

代码

    protected void Button1_Click(object sender, EventArgs e)
{
    // Introducing delay for demonstration.
    System.Threading.Thread.Sleep(10000);
    Label1.Text = "Page refreshed at " +
        DateTime.Now.ToString();
}

protected void Button2_Click(object sender, EventArgs e)
{
    // Introducing delay for demonstration.
    System.Threading.Thread.Sleep(15000);
    Label2.Text = "Page refreshed at " +
        DateTime.Now.ToString();

}
4

2 回答 2

0

也许需要将更新面板配置为有条件地更新:UpdateMode = "Conditional"

检查此链接:http: //msdn.microsoft.com/es-mx/library/system.web.ui.updatepanel.updatemode.aspx

于 2013-02-07T18:07:49.890 回答
0

一般来说,网络是在请求-响应的基础上工作的。当页面发送请求时,它应该等待响应。如果页面重新发送[或发送新]请求旧响应将被忽略并等待新请求的响应。

为了避免这种情况在 Ajax 中排队请求并在收到响应后发送。[或者以其他方式,您可以在页面上说作为单线程工作]

在你的情况下,第一个进度条不应该消失,即使在它等待响应的后面。这可以使用一些 javascript 来解决,但没有任何开箱即用的支持。

或者,您可以使用 iframe 真正同时发送多个请求。

于 2013-04-12T14:49:05.333 回答