| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под 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 вообще поосторожнее надо быть. Первый не срабатывает, если это первый шаг, второй — если нажата кнопка "Готово". |