Доступ к предыдущему 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