Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个ASP.NET AJAX进度控件_Asp.net_Ajax_Servercontrols - Fatal编程技术网

多个ASP.NET AJAX进度控件

多个ASP.NET AJAX进度控件,asp.net,ajax,servercontrols,Asp.net,Ajax,Servercontrols,有人能解释一下如何解决这个问题吗 两个更新面板、两个进度控件、两个命令按钮 当我单击第一个按钮时,我可以看到第一次异步更新的进度。 当我单击第二个命令按钮时,如果第一个异步操作仍在进行中,第一个进度条将消失。如何同时显示两个进度控件 <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>UpdateProgress Tutoria

有人能解释一下如何解决这个问题吗

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

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

    <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>

也许需要配置更新面板以有条件地更新:UpdateMode=“Conditional”

检查此链接:

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

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

在您的情况下,第一个进度条不应该消失,即使在它等待响应的页面后面。这可以用一些javascript来修复,但是没有现成的支持


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

如果我稍后找到时间,我将再次播放更多详细信息。当你打第二个电话时,你的第一个帖子不是取消,第二个电话由于会话锁定而被锁定并等待第一个。谢谢你抽出时间。我想我删除了以前的评论。我再也看不到他们了。现在,我将在单个异步调用中结合多个数据库更新和单个进度控制。
    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();

}