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

Mat*_*ino 9 asp.net data-binding events repeater page-lifecycle

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

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

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

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

更新:

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

  • 在页面生命周期中根本不修改DataSource ID或对象.

Ata*_*hev 7

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

  • 我用一个简单的页面测试过.以下是执行事件的顺序:Page_Load Page_PreRender Repeater1_DataBinding Repeater1_ItemDataBound Repeater1_PreRender根据Reflector,在Repeater.OnPreRender中调用Repeater.EnsureDataBound. (2认同)