Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по Life Cycle / 11 сообщений из 11, страница 1 из 1
21.08.2006, 15:31
    #33932586
PrettyFly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Добрый день!

Возникла необходимость при postback'е проделать некоторое действие перед тем как сработают события с котролов (например button_Click), но после того данные, ведённые пользователем в TextBox'ы будут получены серверными контролами. Сами TextBox'ы создаются динамически (если не динамически, то всё ясно — в Page_Load их данные уже получены, а в нашем случае почему-то нет).

Вопрос: Как этого добиться? ни одно из событий страницы не помогает.
...
Рейтинг: 0 / 0
21.08.2006, 15:41
    #33932625
cadet354
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, PrettyFly, Вы писали:

PF>Добрый день!

PF>Возникла необходимость при postback'е проделать некоторое действие перед тем как сработают события с котролов (например button_Click), но после того данные, ведённые пользователем в TextBox'ы будут получены серверными контролами. Сами TextBox'ы создаются динамически (если не динамически, то всё ясно — в Page_Load их данные уже получены, а в нашем случае почему-то нет).
на какой стадии добавляются контролы?
вообще-то состояние контрола пытается подняться при добавлении на страницу.
Покажи код добавления или погугли(и на этом форуме не раз подымался этот вопрос) dynamic add controls
PF>Вопрос: Как этого добиться? ни одно из событий страницы не помогает.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
21.08.2006, 15:47
    #33932645
PrettyFly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, cadet354, Вы писали:

C>на какой стадии добавляются контролы?

C>вообще-то состояние контрола пытается подняться при добавлении на страницу.
C>Покажи код добавления или погугли(и на этом форуме не раз подымался этот вопрос) dynamic add controls

Контролы добавляются в Page_Load(), например так:


    protected void Page_Load(object sender, EventArgs e)
    {
        tb = new TextBox();
        PlaceHolder1.Controls.Add(tb);
    }
...
Рейтинг: 0 / 0
21.08.2006, 15:52
    #33932661
Sergio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Добрый день!

Возникла необходимость при postback'е проделать некоторое действие перед тем как сработают события с котролов (например button_Click), но после того данные, ведённые пользователем в TextBox'ы будут получены серверными контролами. Сами TextBox'ы создаются динамически (если не динамически, то всё ясно — в Page_Load их данные уже получены, а в нашем случае почему-то нет).

Вопрос: Как этого добиться? ни одно из событий страницы не помогает.

Если контрол создается динамически то лучше это делать в Init. Тогда при PostBack он востанавливают свое состояние в LoadViewState, это как раз происходит между Init и Page_Load и в Page_Load можно с ним работать.
Где наша мудрость, потерянная ради знаний, где наши знания, потерянные ради информации.
...
Рейтинг: 0 / 0
21.08.2006, 15:52
    #33932663
Nikolay_Ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
PF>Контролы добавляются в Page_Load(), например так:
PF>
PF>    protected void Page_Load(object sender, EventArgs e)
PF>    {
PF>        tb = new TextBox();
PF>        PlaceHolder1.Controls.Add(tb);
PF>    }
PF>
Контрол считывает свое состояние при добавлении его в дерево. Если PlaceHolder1 у тебя уже в дереве, помешать контролу считать свое состояние могут две вещи — разница имен родителя (или собственных) и отмена хранения данных во ViewState (свойство EnableViewState для контрола).
...
Рейтинг: 0 / 0
21.08.2006, 16:02
    #33932684
PrettyFly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Контрол считывает свое состояние при добавлении его в дерево. Если PlaceHolder1 у тебя уже в дереве, помешать контролу считать свое состояние могут две вещи — разница имен родителя (или собственных) и отмена хранения данных во ViewState (свойство EnableViewState для контрола).

Имена контролов я вообще не задаю, все они создаются одним и тем же алгоритмом в одном и том же порядке. PlaceHolder1 задан декларативна в aspx-файле.

Но самое интересное, что контролы всё-тки считывают состояние, в событии button_Click значения уже загружены. Вопрос в том, что мне надо их получить до этого.
...
Рейтинг: 0 / 0
21.08.2006, 16:05
    #33932688
Sergio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Если контрол создается динамически то лучше это делать в Init. Тогда при PostBack он востанавливают свое состояние в LoadViewState, это как раз происходит между Init и Page_Load и в Page_Load можно с ним работать.

Извиняюсь небольшая поправочка: в данном случае наверное требуется достать значение TextBox введенное пользователем, так это происходит в Load Postback Data, а не в Load ViewState. В остальном все правильно Load Postback Data происходит там же между Init и Page_Load, сразу после Load ViewState.
Где наша мудрость, потерянная ради знаний, где наши знания, потерянные ради информации.
...
Рейтинг: 0 / 0
21.08.2006, 16:06
    #33932694
PrettyFly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, Sergio, Вы писали:

S>Если контрол создается динамически то лучше это делать в Init. Тогда при PostBack он востанавливают свое состояние в LoadViewState, это как раз происходит между Init и Page_Load и в Page_Load можно с ним работать.

Спасибо, вроде так работает (-:
...
Рейтинг: 0 / 0
21.08.2006, 16:52
    #33932834
cadet354
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Контрол считывает свое состояние при добавлении его в дерево. Если PlaceHolder1 у тебя уже в дереве, помешать контролу считать свое состояние могут две вещи — разница имен родителя (или собственных)
а вы в этом уверены, недавно смотрел рефлектором,
получалось что от имени контрола(его id) это не зависит, view state подгружается согласно индексу.
Просто у меня возникла такая ситуация, я задавал id у контрола, но все равно падал по стандартному в этих случаях exception (Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request. )
N_C> и отмена хранения данных во ViewState (свойство EnableViewState для контрола).
именно так и сделал, хранил отдельно какой контрол был загружен, если изменился, то отключал ViewState в контроле, потом добавлял в placeholder, потом включал :)

Заранее спасибо за ответ.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
22.08.2006, 14:43
    #33934908
Gollum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Здравствуйте, Sergio, Вы писали:

S>Если контрол создается динамически то лучше это делать в Init. Тогда при PostBack он востанавливают свое состояние в LoadViewState, это как раз происходит между Init и Page_Load и в Page_Load можно с ним работать.

Это уже давно не так. D частности, Controls.Add вызывает попытку поднятия ViewState добавляемого элемента управления.У нас "два" по всем наукам, но ботанику мы знаем на "пять"!
...
Рейтинг: 0 / 0
22.08.2006, 15:15
    #33935036
Sergio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Life Cycle
Это уже давно не так. D частности, Controls.Add вызывает попытку поднятия ViewState добавляемого элемента управления.

Каюсь, не знал
! Спасибо!
"уже давно не так" - имеется ввиду ASP.NET 2.0?
И тогда вопрос. Проблема у автора была на самом деле с Load PostBackData, а не с Load ViewState. В этом случае тоже можно полагаться на "Controls.Add"?
Где наша мудрость, потерянная ради знаний, где наши знания, потерянные ради информации.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по Life Cycle / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]