vb.net listview显示下一条记录

时间:2014-12-29 01:16:40

标签: vb.net listview

在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()

1 个答案:

答案 0 :(得分:0)

我假设您正在使用winforms。 ListView控件确实具有虚拟化功能,您可以使用ListView.VirtualMode属性和ListView.CacheVirtualItems事件来尝试。看看这些MSDN链接是否对您有所帮助。

从上面链接:

  

虚拟模式在许多情况下都很有用。如果必须从已经在内存中的非常大的集合填充ListView对象,则为每个条目创建ListViewItem对象可能是浪费的。在虚拟模式下,仅创建所需的项目。在其他情况下,可能需要经常重新计算ListViewItem对象的值,并且对整个集合执行此操作将产生不可接受的性能。在虚拟模式下,仅计算所需的项目。