2008-10-20 4 views
9

У меня есть элемент управления ретранслятора в веб-форме ASP.NET 2.0.ASP.NET Repeater ItemDataBound происходит через событие AFP PreRender?

Как я понимаю, все элементы управления, привязанные к данным, запускают свои события привязки где-то между Page_Load и Page_PreRender событиями.

Однако, событие ItemDataBound моего ретранслятора происходит, по-видимому, после события PreRender.

Как это так и есть ли способ доступа к элементам управления страницы ПОСЛЕ всех событий ItemDataBound?

Обновление:

  • Повторитель использует ObjectDataSource с DataSourceID декларативного набора в повторителе.

  • Идентификатор или объект DataSource вообще не изменяется в течение жизненного цикла страницы.

ответ

7

Декларативная привязка данных (источник данных, указанный с помощью свойства DataSourceID) происходит позже события PreRender. Поведение, которое вы наблюдаете, - это дизайн. Если это не то, что вам нужно, вы должны явно привязать свой контроль - просто вызовите его метод DataBind.

+0

Если это так, как вы это объясните: http://msdn.microsoft.com/en-us/library/ms178472.aspx PreRender | До возникновения этого события: Каждый элемент управления данными, чье свойство DataSourceID задано, вызывает его метод DataBind. – 2008-10-21 00:35:18

0

Я думаю, что у меня была похожая ситуация, и мой выбор был ВЫНУЖДАТЬ элементов управления, чтобы связать себя, позвонив по телефону EnsureChildControls или некоторый подобный метод.

+0

Я знаю, что может заставить его привязку во время Page_Load, но мне было просто интересно, почему она не ждет, пока после связывания Page_PreRender. Wierd! – 2008-10-20 19:28:19

1

Вы конкретно связываете свой ретранслятор (myRepeater.DataBind();) в своем коде за файлом (например, внутри события Page_Load())?

Вы проверили жизненный цикл событий ASP.NET? Извините, если вы уже знаете это, но на всякий случай: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Надеюсь, это поможет.

Ricardo.

+0

Нет. Репликатор не привязан к явным образом. Вот почему я решил, что это произойдет после загрузки страницы, но до PreRender, как указано в жизненном цикле страницы. – 2008-10-20 20:06:02