Дочерняя UpdatePanel и родительская проблема UpdateProgress - PullRequest
1 голос
/ 23 ноября 2010

У меня есть вложенный дочерний и родительский элемент 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. Что мне делать?

Ответы [ 2 ]

1 голос
/ 11 июня 2015

Видно здесь: http://www.asp.net/AJAX/Documentation/Live/overview/UpdateProgressOverview.aspx

Если элемент управления UpdatePanel находится внутри другой панели обновлений, обратная передача, которая создается внутри дочерней панели, вызывает отображение любых элементов управления UpdateProgress, связанных с дочерней панелью. Также отображаются все элементы управления UpdateProgress, связанные с родительской панелью. Если обратная передача происходит из непосредственного дочернего элемента управления родительской панели, отображаются только элементы управления UpdateProgress, связанные с родительской панелью. Это следует логике того, как запускаются обратные передачи.

Итак, я думаю, что вы должны скрыть родительский клиент UpdateProgress:

Вы можете программно управлять отображением элемента управления UpdateProgress, используя события JavaScript beginRequest и endRequest класса PageRequestManager. В обработчике события beginRequest отобразите элемент DOM, представляющий элемент управления UpdateProgress. В обработчике события endRequest скрыть элемент.

1 голос
/ 23 ноября 2010

Свойство UpdateMode UpdatePanel1 не указано, поэтому по умолчанию оно равно Always, что означает, что UpdatePanel1 будет обновлено, когда любой другой UpdatePanel на странице выполнит частичную обратную передачу.

Попробуйте указать UpdateMode="Conditional" во всех ваших UpdatePanels:

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