Я хочу получить элемент, который привязан к данным, во время события ItemDataBound элемента asp: repeater.
Я попробовал следующее (что было неприемлемым ответом на вопрос stackoverflow ):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Object dataItem = e.Item.DataItem;
...
}
но e.Item.DataItem
равно нулю.
Как получить доступ к элементу, привязанному к данным, во время события 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;
...
}