我有一个嵌套的子级和父级UpdatePanel。问题是,当刷新/发布子UpdatePanel时,父级中的UpdateProgress将启动。我怎么能阻止这个?结构是这样的:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate></ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate></ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress3" runat="server" AssociatedUpdatePanelID="UpdatePanel2">
<ProgressTemplate></ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
发布UpdatePanel2
时,UpdateProgress3
未显示,UpdateProgress1
和UpdateProgress2
。我该怎么办?
答案 0 :(得分:1)
未指定UpdatePanel1
的{{3}}属性,因此默认为Always
,这意味着当{1}}上的任何其他UpdatePanel1
时,UpdatePanel
将被刷新页面执行部分回发。
尝试在所有UpdateMode="Conditional"
中指定UpdatePanels
:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
</asp:UpdatePanel>
答案 1 :(得分:1)
见到这里:http://www.asp.net/AJAX/Documentation/Live/overview/UpdateProgressOverview.aspx
如果UpdatePanel控件位于另一个更新面板中,则源自子面板内部的回发将导致显示与子面板关联的任何UpdateProgress控件。 它还显示与父面板关联的任何UpdateProgress控件。如果回发源自父面板的直接子控件,则仅显示与父面板关联的UpdateProgress控件。这遵循了如何触发回发的逻辑。
所以,我认为你必须隐藏父UpdateProgress客户端:
您可以使用PageRequestManager类的JavaScript beginRequest和endRequest事件以编程方式控制何时显示UpdateProgress控件。在beginRequest事件处理程序中,显示表示UpdateProgress控件的DOM元素。在endRequest事件处理程序中,隐藏元素。