10

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

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

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

这是怎么回事,有什么方法可以在所有ItemDataBound事件触发后访问页面控件?

更新:

  • 中继器在中继器控件中使用ObjectDataSource带有DataSourceID声明集的 an。

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

4

4 回答 4

7

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

于 2008-10-20T20:32:45.400 回答
1

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

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

希望能帮助到你。

里卡多。

于 2008-10-20T19:55:29.673 回答
1

以下博客文章中还有一篇关于转发器事件的好文章:

LinkBut​​ton,Repeater 内的标签 - ASP.NET

于 2009-06-13T03:57:46.863 回答
0

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

于 2008-10-20T19:16:08.863 回答