Как сделать разницу между AsyncPostbacks во вложенных панелях обновления в Asp.Net AJAX

StackOverflow https://stackoverflow.com/questions/1426088

Вопрос

В проекте ASP.net AJAX (WebForms),
У меня есть UpdatePanel, и в UpdatePanel у меня есть несколько вложенных элементов управления с UpdatePanels, в основном у меня есть деревья управления.Родительский элемент управления - огромная и очень важная часть сайта, я не могу к нему прикоснуться, (а также он повторно используется во многих местах), панель обновления должна оставаться на текущей позиции.

Дочерние элементы управления на панели обновления имеют функциональные возможности, которые отделены друг от друга (также они отделены с помощью UpdatePanel), чтобы иметь возможность обновлять только часть элемента управления.
В принципе, в Page_Load() у меня есть код, который заполняет каждый дочерний элемент управления данными, например, если у меня есть функция удаления, которая изменяет данные дочерних элементов управления.Шаги такие:

Сначала показывается элемент управления (ParentControl).

  • Page_Load() -> Полное заполнение данными

Если я нажму на удалить:

  • Page_Load() -> полное заполнение данными /* Не хочу вызывать это здесь!*/

  • удаление события -> изменить данные

         ->fullfill data again!
    

Мне нужно внести программные изменения в Обратные ссылки AsyncPostbacks, и используйте функцию on Page_Load(), чтобы не вызывать данные полного заполнения, когда вы просто хотите выполнить событие.

Внешнюю панель обновления вы можете использовать IsAsync Обратная отправка,Обратный вызов IsCallBack,IsPostBack (Обратная отправка) я знаю это наверняка, но эти свойства не меняются при AsyncPostback.

У меня есть 2 AsycPostbacks, и мне нужно провести различие между ними.
1.Сначала это просто отображение данных и инициализация.
2.Выполнение события и внесение изменений в элемент управления

Может быть, кто-нибудь знает технику для реализации или какой-нибудь фреймворк, обладающий таким типом функциональности?

У кого-нибудь есть эта проблема?:(

Это было полезно?

Решение

Я удалил свой другой ответ - видя, что вы сейчас описываете проблему, совершенно отличную от первоначальной, и казалось глупым полностью заменять мой ответ, сохраняя при этом репутацию предыдущей версии.

Вам нужно будет либо проверить события, вызывающие асинхронные обратные вызовы, либо проверить некоторые значения элементов управления на каждой из панелей обновления, чтобы помочь вам определить, что изменилось.

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


Отредактируйте, чтобы добавить:

Просто пытаюсь помочь, быстро появился Google это (AJAX и платформа обратного вызова ASP.NET 2.0):

Какой элемент управления инициировал запрос?

В запросе обратной передачи идентификатор ScriptManager используется в качестве параметра.В общем случае значение представляет собой идентификатор элемента управления, который инициировал частичную обратную передачу.Он находится в формате |.Элементы управления могут регистрироваться в ScriptManager напрямую или через панель обновления.ScriptManager.Свойство AsyncPostBackSourceElementID вернет идентификатор элемента управления, который инициировал частичную обратную отправку.

Пример синтаксиса:

ScriptManager1=UpdatePanel1|Button1

На этой странице также подробно рассказывается о жизненном цикле и различных подключениях к процессу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top