Получить данные, привязанные к ListView по событию DataBound

У меня есть элемент управления ListView, и я добавил событие DataBound (не знаю, является ли оно правильным) в элемент управления.

Я хочу получить доступ к данным, привязанным к этому конкретному ItemTemplate из этого события, возможно ли это?

12 голосов | спросил Fermin 13 Maypm09 2009, 17:40:32

4 ответа


0

Решение C #

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e)
{        
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        ListViewDataItem dataItem = (ListViewDataItem)e.Item;
        // you would use your actual data item type here, not "object"
        object o = (object)dataItem.DataItem; 
    }
}

Почему они так сильно изменили этот список для ListView, я все еще озадачиваю. Там должна быть причина, хотя.

ответил Adam Nofsinger 13 PM00000070000005231 2009, 19:25:52
0

Немного поздно, но я постараюсь ответить на ваш вопрос, так как у меня была такая же проблема и я нашел решение. Необходимо преобразовать свойство Item объекта ListViewItemEventArgs в ListViewDataItem, а затем получить доступ к свойству DataItem этого объекта, например, так:

Private Sub listView_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles productsList.ItemDataBound
    If e.Item.ItemType = ListViewItemType.DataItem Then
        Dim dataItem As Object = DirectCast(e.Item, ListViewDataItem).DataItem
    ...
End Sub

Затем вы можете привести объект dataItem к тому типу, которым был привязан ваш объект. Это отличается от того, как работают другие элементы управления с привязкой к данным, такие как повторитель, где DataItem является свойством для аргументов события для метода DataBound.

ответил KOTJMF 30 J0000006Europe/Moscow 2009, 18:54:39
0

Нашел обходной путь, я создал метод для форматирования данных так, как мне нужно, и вызвал их из разметки, используя:

<%# doFormatting(Convert.ToInt32(Eval("Points")))%>
ответил Fermin 13 Maypm09 2009, 18:59:29
0

Данные, используемые для текущего элемента, можно найти в EventArgs.

Таким образом, из RepeaterItemEventArgs e мы можем получить доступ к текущему элементу, просмотрев e.Item.DataItem.

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e)
{        
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var currentItem = e.Item.DataItem;
    }
}
ответил benscabbia 10 Jam1000000amSun, 10 Jan 2016 02:58:13 +030016 2016, 02:58:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132