多个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();
}