2011-02-09 6 views
2

Я нашел this thread, пытаясь решить мою проблему, к сожалению, это не похоже на проблему, поскольку у меня уже есть все, как должно быть.UpdatePanel Условный updatemode не работает

У меня есть 3 UpdatePanels, что каждый вызов функции на .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(). Я попытался добавить, что для каждого элемента управления к их соответствующим панелям, и это также не имело никакого значения.

Любые идеи?

ответ

2

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

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

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

MSDN выдержка:

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

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

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

Работа с частичной Page Rendering Событием штатов другого события, которое работает только тогда, когда все страница грузы:

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

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

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

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

Смежные вопросы