我有一个包含多个UpdatePanel
控件的页面,每个控件都有一个相关的UpdateProgress
。回发异步请求时,仅显示第一个UpdateProgress
控件。其他请求成功完成,但UpdateProgress
未显示。
如何让页面上的所有更新面板正确显示?
这是一个显示问题的例子(抱歉有点长):
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Enabled="true" Interval="1000" />
<asp:Label ID="Label1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>Updating...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Timer ID="Timer2" runat="server" OnTick="Timer2_Tick" Enabled="true" Interval="2000" />
<asp:Label ID="Label2" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel2">
<ProgressTemplate>Updating...</ProgressTemplate>
</asp:UpdateProgress>
protected void Timer1_Tick(object sender, EventArgs e) {
System.Threading.Thread.Sleep(1000);
Timer1.Enabled = false;
Label1.Text = DateTime.Now.ToString("HH:mm:ss");
}
protected void Timer2_Tick(object sender, EventArgs e) {
System.Threading.Thread.Sleep(1000);
Timer2.Enabled = false;
Label2.Text = DateTime.Now.ToString("HH:mm:ss");
}
答案 0 :(得分:0)
我刚刚发现,如果我将UpdateProgress
放在之前的UpdatePanel
...
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>Updating...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Enabled="true" Interval="1000" />
<asp:Label ID="Label1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>