Обработка событий в динамическом пользовательском контроле asp.net - PullRequest
0 голосов
/ 22 декабря 2008

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

У меня нет решения о том, как это сделать?

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

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Давайте предположим этот сценарий:

  • У вас есть страница корзины покупок.
  • Загружен контроль отгрузки.
  • Пользователь нажимает следующую кнопку.

--- Обратная связь ---

  1. Страница корзины загружена
  2. Загружен контроль отгрузки.
  3. Событие 'click' обрабатывается управлением отгрузки.
  4. Управление отгрузкой утилизировано.
  5. Загружен контроль платежей.

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

В PageInit страницы корзины покупок вы получаете переменную Session и загружаете соответствующий элемент управления (шаги 1 и 2). Убедитесь, что вы делаете это в PageInit, чтобы ASP.NET запускал события.

В обработчике событий в элементе управления отправкой вы затем обновляете переменную Session (шаг 3).

В Page_LoadComplete страницы корзины покупок вы располагаете контролем отправки (шаг 4) и загружаете контроль оплаты (шаг 5).

Скотт Митчелл написал отличную статью об этом сценарии: http://scottonwriting.net/sowBlog/posts/3962.aspx

0 голосов
/ 22 декабря 2008

Webforms или ASP.NET MVC? Я приду вебформ ...

Попробуйте использовать CompositeControl. Если используется привязка данных, вы можете использовать DataBoundCompositeControl. В методе CreateCHildren вы динамически создаете свои элементы управления, добавляете их в дочернюю коллекцию. Вот пример довольно сложного DataBoundCompositeControl, который я создал один раз (с обработкой событий на внутренних дочерних элементах управления):

Управление лесами

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

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

...