2010-04-12 5 views
12

Ich versuche, eine Sammlung zu binden, die die ICollection-, IEnumerable- und IList-Schnittstelle zu einem ASP.net-Repeater implementiert. Die Sammlung heißt CustomCollection. Also habe ich die Einstellung der Datenquelle des Repeaters zur Sammlung wie folgt:Warum ist e.Item.DataItem beim Ereignis ItemDataBound null, wenn ein asp: net Repeater an eine Collection gebunden wird?

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

Dann wird auf der ItemDataBound Ereignis, ich versuche das DataItem Objekt zuzugreifen, wie folgt:

void rptRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e){ 

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

} 

Aus irgendeinem Grund ist das e.Item.DataItem-Objekt null. Weiß jemand, warum das ist, und/oder was ich tun könnte, um das Objekt in der Sammlung zu erhalten, das mit dem Repeater verbunden werden soll?

Danke!

Antwort

26

In Ihren ItemDataBound Event-Handler, müssen Sie überprüfen, dass es nicht zu einer Kopf- oder Fußzeile Vorlage zu binden versucht:

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

Sie könnten auch verwenden:

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

Verwandte Themen