【问题标题】:Access previous ListViewDataItem in itemdatabound访问 itemdatabound 中的前一个 ListViewDataItem
【发布时间】:2017-01-28 03:07:19
【问题描述】:

在 itemDatabound 期间尝试访问 listview 中的上一个项目,但它没有返回任何内容。事实上,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 上会显示正确的记录数,但所有数据项都是 = 无。

【问题讨论】:

    标签: listview itemdatabound dataitem


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多