ASP.NET Repeater ItemDataBound发生在PreRender事件之后?

时间:2008-10-20 18:53:24

标签: asp.net data-binding events repeater page-lifecycle

我在ASP.NET 2.0 Web表单上有一个转发器控件。

据我了解,所有页面的数据绑定控件都会在Page_LoadPage_PreRender事件之间的某处触发绑定事件。

但是,我的转发器的ItemDataBound事件似乎发生在PreRender事件之后。

这是怎么回事?有什么方法可以在所有ItemDataBound事件被解雇后访问页面控件?

更新

  • Repeater在转发器控件中使用带有ObjectDataSource声明集的DataSourceID

  • 在页面生命周期中,DataSource ID或对象根本不会被修改。

4 个答案:

答案 0 :(得分:7)

声明性数据绑定(通过DataSourceID属性指定的数据源)发生在PreRender事件之后。您正在观察的行为是设计的。如果这不是你需要的,你应该明确地数据控制你的控件 - 只需调用它的DataBind方法。

答案 1 :(得分:1)

您是否在代码隐藏文件中专门绑定了转发器(myRepeater.DataBind();)(例如在Page_Load()事件中)?

您是否检查过ASP.NET事件生命周期?很抱歉,如果您已经知道这一点,以防万一:http://msdn.microsoft.com/en-us/library/ms178472.aspx

希望它有所帮助。

里卡多。

答案 2 :(得分:1)

以下博文中还有关于转发器事件的好帖子:

LinkButton ,Label inside Repeater - ASP.NET

答案 3 :(得分:0)

我认为我有类似的情况,我的选择是强制控件绑定自己,通过调用EnsureChildControls或类似的方法。