在ListView中显示记录时出现问题。我现在拥有的数据库有10k +的记录(行)。将数据拉到ListView时,需要花费很多时间才能将显示的项目限制为50.我可以成功显示50个项目。但我的问题是当用户点击“下一页”时,如何显示下一个51-100记录。按钮?我不知道从哪里开始。请帮我。感谢。
da = New MySqlDataAdapter
Dim strSql As String = "SELECT * FROM tbl_questions"
ListView1.Items.Clear()
Call connect()
da.SelectCommand = New MySqlCommand(strSql)
da.SelectCommand.Connection = cn
da.Fill(ds)
Dim i As Integer
For i = 0 To ds.Tables(0).Rows.Count - 1
If i = 49 Then
Exit For
End If
Dim lv As ListViewItem = ListView1.Items.Add(ds.Tables(0).Rows(i)("function"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("subject"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("level"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("type"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("question"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("choice_a"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("choice_b"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("choice_c"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("choice_d"))
lv.SubItems.Add(ds.Tables(0).Rows(i)("correct_ans"))
Next
da.Dispose()
答案 0 :(得分:0)
我假设您正在使用winforms。 ListView控件确实具有虚拟化功能,您可以使用ListView.VirtualMode
属性和ListView.CacheVirtualItems
事件来尝试。看看这些MSDN链接是否对您有所帮助。
从上面链接:
虚拟模式在许多情况下都很有用。如果必须从已经在内存中的非常大的集合填充ListView对象,则为每个条目创建ListViewItem对象可能是浪费的。在虚拟模式下,仅创建所需的项目。在其他情况下,可能需要经常重新计算ListViewItem对象的值,并且对整个集合执行此操作将产生不可接受的性能。在虚拟模式下,仅计算所需的项目。