【问题标题】:Child UpdatePanel and parent UpdateProgress problem子 UpdatePanel 和父 UpdateProgress 问题
【发布时间】:2010-11-23 15:56:41
【问题描述】:

我有一个嵌套的子和父 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 会显示。我该怎么办?

【问题讨论】:

    标签: asp.net .net-3.5 asp.net-ajax updatepanel updateprogress


    【解决方案1】:

    UpdatePanel1UpdateMode 属性没有指定,所以默认为Always,这意味着当页面上的任何其他UpdatePanel 执行部分回发时,UpdatePanel1 将被刷新。

    尝试在所有UpdatePanels 中指定UpdateMode="Conditional"

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    </asp:UpdatePanel>
    

    【讨论】:

    • 我在 UpdatePanel1 中添加了 UpdateMode="Conditional" 但还是一样,显示的是 UpdateProgress1 和 2,而不是 3..
    【解决方案2】:

    在这里看到:http://www.asp.net/AJAX/Documentation/Live/overview/UpdateProgressOverview.aspx

    如果 UpdatePanel 控件位于另一个更新面板中,则源自子面板内部的回发会导致显示与子面板关联的任何 UpdateProgress 控件。 它还显示与父面板关联的所有 UpdateProgress 控件。 如果回发源自父面板的直接子控件,则仅显示与父面板关联的 UpdateProgress 控件。这遵循了如何触发回发的逻辑。

    所以,我认为您必须隐藏父 UpdateProgress 客户端:

    您可以使用 PageRequestManager 类的 JavaScript beginRequest 和 endRequest 事件以编程方式控制何时显示 UpdateProgress 控件。在 beginRequest 事件处理程序中,显示代表 UpdateProgress 控件的 DOM 元素。在 endRequest 事件处理程序中,隐藏元素。

    【讨论】:

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