我创建了一个带ASP Repeater的ASP.net网页。我将ASP Repeater与IOrderedEnumerable<int>
DataSource绑定。
我需要在Page_Load事件处理程序内访问Repeater DataItems。但是,当我尝试获取repeater.Items[x].DataItem
的值时,我总是得到null。这里应该总是有一个整数值。
尽管如此,该页面也可以很好地呈现。为什么我不能在Page_Load事件处理程序中访问RepeaterItems的DataItem
属性?
答案 0 :(得分:2)
您的Repeater
直到页面生命周期的后期才进行数据绑定。如果您想在Repeater.Items[i].DataItem
处理程序中引用Page.Load
,请先尝试早期绑定Repeater
:
repeater.DataBind()
答案 1 :(得分:0)
仅在数据绑定期间可用。
答案 2 :(得分:0)
正如其他人所说,它仅在数据绑定期间可用。您需要连接转发器的OnItemDataBound事件。在其事件处理程序中,您可以执行以下操作:
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
WhateverType Item = e.Item.DataItem as WhateverType;
break;
}
}
答案 3 :(得分:0)
数据项仅在数据绑定过程发生后才存在。在转发器中回发中保留的唯一内容是在viewstate中序列化的控件属性。如果您需要这些项目中的数据,您可以更早地执行伪编码和databind,或者如果不可能,您可以编写一个实用程序函数,它接收转发器数据项并从转发器中的控件中提取它(假设您存储了所有数据)以某种方式在这些控件中需要的信息)