当将asp.net Repeater绑定到一个集合时,在ItemDataBound事件中为什么e.Item.DataItem为空?

13

我正在尝试将一个实现了ICollection、IEnumerable和IList接口的集合绑定到一个asp.net重复器中。这个集合的名称为CustomCollection。所以我将重复器的数据源设置为该集合,如下所示:

rptRepeater.DataSource = customCollection;
rptRepeater.Databind();

然后,在ItemDataBound事件中,我尝试访问DataItem对象,如下所示:

void rptRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e){

object obj = e.Item.DataItem; // DataItem is null for some reason

}

由于某些原因,e.Item.DataItem对象为空。有人知道为什么会这样,或者我该如何获取要绑定到Repeater的集合中的对象吗?

谢谢!

2个回答

30

在你的ItemDataBound事件处理程序中,你需要检查它是否尝试将数据绑定到页眉或页脚模板:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
    object obj = e.Item.DataItem;
}

1

另外你还可以使用:

if(e.item.dataItem != null) object obj = e.Item.DataItem;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接