Я хочу получить элемент, связанный с данными, во время события ItemDataBound для asp: repeatater.
Я попробовал следующее (что было неприемлемым ответом в qaru.site/info/420946/...):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Object dataItem = e.Item.DataItem;
...
}
но e.Item.DataItem
имеет значение null.
Как я могу получить доступ к элементу, который привязан к данным во время события ItemDataBound. Я предполагаю, что событие ItemDataBound происходит, когда элемент привязан к данным.
Я хочу получить объект, поэтому я могу предпринять шаги для контроля того, как он отображается, кроме того, у объекта могут быть дополнительные полезные свойства, чтобы я мог обогатить, как он отображается.
Ответ
Инструмент имел правильный ответ. Ответ заключается в том, что e.Item.Data
действует только тогда, когда e.Item.ItemType
(Item, AlternatingItem). В других случаях это неверно. В моем случае я получал события ItemDataBound во время строк заголовка (или нижнего колонтитула), где нет DataItem:
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// if the data bound item is an item or alternating item (not the header etc)
if (e.Item.ItemType != ListItemType.Item &&
e.Item.ItemType != ListItemType.AlternatingItem)
{
return;
}
Object dataItem = e.Item.DataItem;
...
}