【问题标题】:Multiple ASP.NET AJAX Progress Controls多个 ASP.NET AJAX 进度控件
【发布时间】:2013-01-21 21:50:44
【问题描述】:

谁能解释一下如何解决这个问题?

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

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

    <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();

}

【问题讨论】:

  • 如果以后有时间我会重播更多细节。当您拨打第二个电话时,您发布的第一个帖子不会取消,并且由于会话锁定,第二个电话被锁定并等待第一个。
  • 感谢您的宝贵时间。我想我删除了我以前的 cmets。我再也见不到他们了。现在,我将在单个异步调用中将多个数据库更新与单个进度控制结合起来。

标签: asp.net ajax servercontrols


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多