Подтвердить что ты не робот

Почему 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!

4b9b3361

Ответ 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;