Различия между AsyncPostbacks во вложенных UpdatePanels в Asp.Net AJAX - PullRequest
0 голосов
/ 15 сентября 2009

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

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

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

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

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

  • Page_Load () -> fullfill data / * Не хочу, чтобы вызвать это здесь! * /

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

         ->fullfill data again!
    

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

За пределами UpdatePanel вы можете использовать IsAsyncPostback , IsCallBack , IsPostback Я знаю это точно, но эти свойства не изменяются в AsyncPostback .

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

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

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

1 Ответ

1 голос
/ 15 сентября 2009

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

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

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


Изменить, чтобы добавить:

Просто пытаясь помочь, быстрый гугл обнаружил это (AJAX и ASP.NET 2.0 Callback Framework) :

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

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

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

ScriptManager1=UpdatePanel1|Button1

Эта страница также содержит некоторые подробности о жизненном цикле и различных приемах этого процесса.

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