Постбек asp.net oninit

У меня есть сетка с одним TemplateField, который является флажком и, скажем, двумя связанными полями.

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

Если я перенесу код привязки сетки при обратной передаче в OnInit вместо Page_Load, то я потеряю данные флажка, отмеченного пользователем. Почему? Должны ли данные обратной передачи не накладываться поверх сетки после oninit?

Он действительно работает с page_load, я предполагаю, что когда я повторно привязываю сетку, я накладываю свои данные на сетку, которая имеет данные обратной передачи, поскольку столбец флажка не привязан, я не перезаписываю данные обратной передачи.

ПРИМЕЧАНИЕ: состояние просмотра отключено в моей сетке, я привязываю данные (хранящиеся в сеансе) при каждой обратной передаче. Также что-то странное, когда я использую OnInit, при каждой обратной передаче я получаю первую страницу сетки, независимо от того, на какой странице была запущена обратная передача. Спасибо.


person user425232    schedule 19.08.2010    source источник


Ответы (3)


Я считаю, что это связано с тем, что состояние просмотра еще не загружено в событии OnInit. Проверьте это http://msdn.microsoft.com/en-us/library/ms178472.aspx, чтобы узнать больше о жизненном цикле страницы asp.net. Надеюсь, поможет!!

person Mike    schedule 19.08.2010
comment
ViewState отключен в моей сетке, поэтому я привязываю данные, хранящиеся в сеансе, при каждой обратной передаче. - person user425232; 19.08.2010
comment
Проголосуйте за ссылку на жизненный цикл ASP.NET - ОЧЕНЬ полезная страница. - person mikemanne; 19.08.2010

Подобно LoadViewState, ProcessPostData - это то, что происходит после OnInit, но до Page_Load. Я предполагаю, что значения флажков отправляются обратно на сервер как данные Post. Таким образом, я подозреваю, что проблема такая же, как если бы ViewState был включен: OnInit слишком рано - опубликованные данные (значения флажков) еще не были применены к вашим элементам управления.

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

person mikemanne    schedule 19.08.2010
comment
Я согласен с вами, для OnInit нет постданных, и это нормально. Я перебираю сетку OnPageIndexChanging и ожидаю постданные, но не получаю. То, что я привязал сетку в OnInit, меняет поведение. Я хотел бы понять разницу между сеткой привязки на Page_Load и OnInit. Я кое-что упустил. - person user425232; 19.08.2010
comment
Возможно, повторная привязка сетки в OnInit делает невозможным для ProcessPostData перезапись правильных элементов данных значениями флажков. Но это мои предположения - я не уверен. Извините - я думаю, что из-за отсутствия опыта работы с элементами управления без состояния просмотра мне сложно быть очень полезным. : - / - person mikemanne; 20.08.2010

Кто-то ответил на это на форуме asp.net. Ссылка здесь

http://forums.asp.net/p/1592192/4036031.aspx#4036031

person user425232    schedule 20.08.2010