2013-07-06 1 views
0

У меня есть набор элементов управления, вложенных друг в друга. Самый верхний элемент управления имеет вызов метода DataBind() в Page_Load, который вызывает вызов метода DataBind() для внутренних элементов управления.Почему элемент управления DataBind вызывается перед методом Page_Load элемента управления?

Я думал, что PageLoad должен быть полностью завершен до запуска событий DataBind для элементов управления (http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx). Это верно?

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

Вопросы, относящиеся к этому:

  1. Почему элемент управления DataBind вызывается перед использованием метода Page_Load элемента управления?
  2. Как правильно инициализировать данные управления так перед DataBind() призвал к самой верхней родителю, все нижние/вложенные элементы управления будут иметь все необходимые данные

спасибо.

+0

Не уверен. Я бы предположил, потому что доступность внутреннего элемента управления становится проблемой при загрузке страницы, поэтому она становится визуализированной в стиле фанк. В любом случае вам, вероятно, должен быть источник данных для внутренней привязки управления на внешнем элементе управления на событии OnDataBound/Binding. – Sinaesthetic

ответ

0

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

Попробуйте выполнить DataBind внутреннего контроля во время события OnDataBound внешнего управления. Или если on зависит от другого, загрузите зависимый элемент управления в событие OnDataBound зависимости.

Смежные вопросы