Доступ к предыдущему ListViewDataItem в элементе databound

Попытка получить доступ к предыдущему элементу в listview во время itemDatabound, но ничего не возвращает. Фактически, lvListview.items.count показывает 0; хотя записи явно там.

Спасибо конечно за любую помощь.:)

Protected Sub lvReleaseNotesReport_ItemDataBound(sender As Object, e As ListViewItemEventArgs) Handles lvReleaseNotesReport.ItemDataBound

    If e.Item.ItemType = ListViewItemType.DataItem Then

        Dim relNote As ReleaseNotesDTO = DirectCast(e.Item.DataItem, ReleaseNotesDTO)
        If e.Item.DataItemIndex > 0 Then
            Dim prevNote As ReleaseNotesDTO = DirectCast(lvReleaseNotesReport.Items(e.Item.DataItemIndex - 1).DataItem, ReleaseNotesDTO)
            'prevNote keeps coming up as Nothing
        End If

        'do other stuff with relNote and prevNote...

    End If

End Sub

Пробовал и это...

Protected Sub lvReleaseNotesReport_PreRender(sender As Object, e As EventArgs) Handles lvReleaseNotesReport.PreRender

    For Each item As ListViewItem In lvReleaseNotesReport.Items

        If item.ItemType = ListViewItemType.DataItem Then

            If item.DataItemIndex > 0 Then

                Dim thisNote As ReleaseNotesDTO = DirectCast(item.DataItem, ReleaseNotesDTO)
                Dim prevItem As ListViewDataItem = lvReleaseNotesReport.Items(item.DataItemIndex - 1)
                Dim prevNote As ReleaseNotesDTO = DirectCast(prevItem.DataItem, ReleaseNotesDTO)

                'do other stuff with relNote and prevNote...

            End If

        End If

    Next

End Sub

При пошаговом выполнении кода наведение курсора на lvReleaseNotesReport.Items показывает правильное количество записей, но все элементы данных = ничего.

1 ответ

В любом случае спасибо, я понял это. DataKeyNames и DataKeys индекс.

<asp:ListView ID="lvReleaseNotesReport" runat="server" DataKeyNames="Build" GroupItemCount="1">

    Dim keyIndex As Int32 = 0
    For Each item As ListViewDataItem In lvReleaseNotesReport.Items

        If item.DataItemIndex > 0 Then

            Dim thisBuildID As String = lvReleaseNotesReport.DataKeys(keyIndex)("Build").ToString()
            Dim prevBuildID As String = lvReleaseNotesReport.DataKeys(keyIndex - 1)("Build").ToString()
            If thisBuildID = prevBuildID Then

               'DO STUFF

        End If
        keyIndex += 1

    Next
Другие вопросы по тегам