1

我有一个嵌套的子和父 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不显示,但是UpdateProgress1UpdateProgress2。我应该怎么办?

4

2 回答 2

1

The UpdateMode property of UpdatePanel1 is not specified, so it defaults to Always, which means UpdatePanel1 will be refreshed when any other UpdatePanel on the page performs a partial postback.

Try specifying UpdateMode="Conditional" in all your UpdatePanels:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
</asp:UpdatePanel>
于 2010-11-23T16:02:02.500 回答
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 事件处理程序中,隐藏元素。

于 2015-06-11T13:56:17.283 回答