UpdatePanel Условный режим обновления не работает - PullRequest
2 голосов
/ 09 февраля 2011

Я нашел эту тему , пытаясь решить мою проблему, к сожалению, я не могу решить проблему, поскольку у меня уже есть все так, как должно быть.

I 'у нас есть 3 панели обновления, каждая из которых вызывает функцию при настройке файла .js следующим образом:

<asp:UpdatePanel ID="upPnlGeneralinfo" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <ContentTemplate>
        <script type="text/javascript">
            Sys.Application.add_load(BindPageLoad); 
        </script>

У каждой, конечно, свой идентификатор.Всякий раз, когда элемент управления вызывает постбэк в панели обновления, он работает, однако в файле js я добавил console.log («запуск файла js»), и я вижу, что он вызывается три раза, то есть обновляются все три панели обновлениявместо одного.

Все триггеры находятся внутри каждой из соответствующих панелей обновлений, поэтому мне не нужно добавлять какие-либо триггеры (я просто сделал, чтобы убедиться, и это не имеет никакого значения).Разве UpdateMode = Conditional не разрешит это?

Также стоит упомянуть, что ни один из моего кода никогда не вызывает updatepanel.update ().Я попытался добавить это для каждого элемента управления на соответствующие панели, и это тоже не имело значения.

Есть идеи?

1 Ответ

2 голосов
/ 09 февраля 2011

Это не обязательно означает, что все ваши панели обновления обновляются.

В документах MSDN говорится, что события загрузки клиента возникают после синхронной (обратная передача на всю страницу) или асинхронной (частичная обратная передача).

Это может означать, что только одна из ваших панелей обновлений обновляется как задумано, но все три обработчика событий запускаются снова после асинхронной обратной передачи из-за того, как они были подключены с использованием MS Ajax.

MSDN выдержка:

Клиентские события классов приложения и PageRequestManager
Событие Sys.Application.load

  • Sys.Application.add_load (обработчик);

Поднимается после того, как все сценарии были загружены и все объекты в приложение, созданное с помощью $ create инициализированы. Загрузка событие поднимается для всех постбэков сервер, который включает в себя асинхронные обратные передачи.
- http://msdn.microsoft.com/en-us/library/bb386417.aspx

Работа с событиями рендеринга частичных страниц сообщает о другом событии, которое запускается только при загрузке всей страницы:

При обычной обработке страницы в браузер, событие window.onload DOM поднимается при первой загрузке страницы
- http://msdn.microsoft.com/en-us/library/bb398976.aspx

Это обычный метод загрузки DOM, не являющийся частью MS Ajax.

Поэтому я предполагаю, что если вы подключите свой клиентский код к обычному событию window.onload , то оно будет выполняться только при первой загрузке полной страницы, а не при последовательных асинхронных обратных передачах (также как панель обновления / частичное обновление).

Является ли это знание доступным для достижения желаемого результата, я не уверен. Возможно, вы ищете только объекты MS Ajax для решения, когда существует гибридный браузер / клиентское решение MS Ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...