Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > wizard - динамические контролы


Автор: mazzym 30.3.2011, 15:15
Есть элемент Wizard на странице. На некотором его шаге в WizardStep в обработчике его события OnActivate динамически добавляются контролы (TextBox). Вопрос в том, как получить их значения при переходе на следующий шаг. Например, в обработчике события WizardStep OnDeactivate элементы управления не видны (похоже они где-то разрушаются). Что делать?

Автор: Arks 8.5.2011, 15:02
Привет.
Да, они разрушаются.
В ASP.NET, вообще все элементы при каждом обращении к странице сначала создаются, а потом уничтожаются (после прохождения жизненного цикла и обработки всех событий в частности).
Событие Activate и Deactivate возникают не при одном и том же обращении к странице. При одном обращении вызывается ваш OnActivate, потом пользователь нажимает кнопку "Далее", возникает новое обращение к странице, заново создаются все элементы управления, вызывается OnDeactivate для текущего шага, только потом OnActivate, но уже для следующего шага.
Таким образом ваши контролы, создаваемые в OnActivate при вызове OnDeactivate не существуют.
Контролы, расположенные на странице, надо создавать в Page.PreInit, Page.Init, а для Wizard — в Wizard.Init, соответственно.

Вот это советуют внимательно прочесть: http://msdn.microsoft.com/en-us/library/ms178472(v=VS.85).aspx.

И с Activate, Deactivate вообще поосторожнее надо быть. Первый не срабатывает, если это первый шаг, второй — если нажата кнопка "Готово".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)