Обработка событий в динамическом пользовательском элементе управления asp.net

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

Я не могу решить, как это сделать?

У кого-нибудь есть достойная идея?


person Community    schedule 22.12.2008    source источник


Ответы (2)


Предположим такой сценарий:

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

--- Постбэк ---

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

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

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

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

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

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

person mathijsuitmegen    schedule 27.10.2009

Веб-формы или ASP.NET MVC? Я предполагаю, что веб-формы ...

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

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

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

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

person justin.m.chase    schedule 22.12.2008