Почему дочерний элемент управления дочерней панели обновления обновляет как родительский, так и дочерний элементы, если каждый из них имеет значение условный?
У нас есть структура, которая имеет 3 основных панели обновления, каждая из которых имеет несколько вложенных панелей обновления (но только один уровень вложенности.) Все панели имеют значение conditional, а ChildrenAsTriggers-false, так что это выглядит примерно так:
<asp:UpdatePanel ChildrenAsTriggers="false" OnLoad="Update_OnLoad"
ID="updateCol2" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:UpdatePanel ChildrenAsTriggers="false" UpdateMode="Conditional"
ID="updateFeed" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Button OnClick="function" ID="btnSubmit" runat="server" />
<ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
Я ожидал бы, что функция OnLoad родительской панели обновления никогда не будет работать, кроме как при фактической загрузке страницы, и что функция OnClick кнопки будет выполняться при каждом щелчке, обновляя дочернюю панель обновления. Однако, родительская панель обновления обновляется при каждом нажатии кнопки, а дочерняя панель обновления запускается только после этого (в результате обновления родительской панели обновления).)
2 ответа:
Действительно ли родительская панель обновления обновляется, то есть содержимое изменяется?
Я ожидал бы, что OnLoad функция родительской панели обновления никогда бы не побежал, кроме как на самом деле загрузка страницы
Это ложное, но, к сожалению, распространенное предположение. Помните, что даже если это асинхронная обратная передача, весь жизненный цикл страницы и элемента управления выполняется для каждого элемента управления, включая Load и Init. Это так же, как вы просили страницу обычно.
Разница в том, что будет обновляться только область UpdatePanel страницы, а не весь пользовательский интерфейс.
Для получения дополнительной информации о том, как работают панели обновления есть отличная статья о ASP.Net сайт документации Ajax .
Используя точно вставленный код pschorf (одна updatepanel содержится в другой updatepanel), можно не запускать родительскую updatepanel, когда запускается дочерняя?
Запускает только дочернюю панель updatepanel, чтобы не обновлять всю область родительской панели updatepanel и только дочернюю область updatepanel.
Пример проекта Кодекса:
<UPanel1 ChildrenAsTriggers="false" UpdateMode="Conditional"> <UPanel2 ChildrenAsTriggers="false" UpdateMode="Conditional"> <asp:Button onclick="..." /> </UPanel2> Other UPanel1's content not being refreshed after the UPanel2's button click </UPanel1>
Спасибо! (Возможно, пост womp ответил на мой ответ, и я неправильно понял)