Почему e.Item.DataItem null указывает на событие ItemDataBound при привязке asp: net Repeater к коллекции?
Я пытаюсь связать коллекцию, реализующую интерфейс 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 имеет значение null. Кто-нибудь знает, почему это так и/или что я могу сделать, чтобы схватить объект в коллекции, который должен быть привязан к репитеру?
Thanx!
Ответы
Ответ 1
В вашем обработчике событий ItemDataBound
вам нужно проверить, что он не пытается привязать к шаблону заголовка или нижнего колонтитула:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
object obj = e.Item.DataItem;
}
Ответ 2
также вы можете использовать:
if(e.item.dataItem != null)
object obj = e.Item.DataItem;