Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is e.Item.DataItem null on ItemDataBound event when binding an asp:net Repeater to a Collection?

I'm trying to bind a collection implementing the ICollection, IEnumerable and IList interface to an asp.net repeater. The Collection is named CustomCollection. So I'm setting the datasource of the repeater to the collection, as follows:

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

Then, on the ItemDataBound event, I'm trying to access the DataItem object, as follow:

void rptRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e){

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

}

For some reason the e.Item.DataItem object is null. Do anyone know why this is, and/or what I could do to get hold of the object in the collection that is to be databound to the repeater?

Thanx!

like image 328
Tomas Vinter Avatar asked Apr 12 '10 10:04

Tomas Vinter


1 Answers

In your ItemDataBound event handler, you need to check that it is not trying to bind to a header or footer template:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
    object obj = e.Item.DataItem;
}
like image 129
Oded Avatar answered Sep 20 '22 18:09

Oded