从数据库接收数据时如何设置Listview

How to setup Listview when receiving data from database

我可以将我的数据打印到列表视图中,但结果却一团糟。我该如何正确设置列表视图?

Do While Not rs.EOF

   listRecentTransactions.Items.Add(rs.Fields("BetID").Value)
   listRecentTransactions.Items.Add(rs.Fields("FightNumber").Value)
   listRecentTransactions.Items.Add(rs.Fields("BetOption").Value)
   listRecentTransactions.Items.Add(rs.Fields("Amount").Value)
   listRecentTransactions.Items.Add(rs.Fields("TransactionDate").Value)
   listRecentTransactions.Items.Add(rs.Fields("Barcode").Value)
   i = i + 1
rs.MoveNext()
Loop

结果如下

首先,在设计视图中设置您的列。

在代码中调用.BeginUpdate。这可以防止 ListView 在调用 .EndUpdate 之前重绘。这会加快速度,因为重绘屏幕是一个缓慢的过程。

接下来,创建一个新的 List(Of T) 来保存列表项。

在循环的每次迭代中,我们都会创建一个新的列表项并根据记录集数据设置其属性。设置属性后,列表项将添加到 List(Of ListViewItem)(而不是 ListView),然后我们移动到下一条记录。

循环后,整个列表被添加到 ListView.AddRangeItems 集合中。因为 .AddRange 期待列表中的数组调用 .ToArray

最后,在 ListView 上调用 .EndUpdate。这是数据实际同时出现在 ListView 中的位置,因此屏幕只需重绘一次。

我真希望你停止使用 ADODB 并与 ADO.net 一起进入这个世纪。

Private Sub LoadListView()
    listRecentTransactions.BeginUpdate()
    Dim lst As New List(Of ListViewItem)
    Do While Not rs.EOF
        Dim li As New ListViewItem
        li.Text = rs.Fields("BetID").Value)
        li.SubItems.Add(rs.Fields("FightNumber").Value)
        li.SubItems.Add(rs.Fields("BetOption").Value)
        li.SubItems.Add(rs.Fields("Amount").Value)
        li.SubItems.Add(rs.Fields("TransactionDate").Value)
        li.SubItems.Add(rs.Fields("Barcode").Value)
        lst.Add(li)
        rs.MoveNext()
    Loop
    listRecentTransactions.Items.AddRange(lst.ToArray)
    listRecentTransactions.EndUpdate()
End Sub