有没有办法在VB.NET win Form中对ListView控件应用分页

时间:2014-04-29 03:35:56

标签: vb.net winforms

我正在使用带有 ListView 控件的2005年vb.net的 windows 。现在我想将分页应用于ListView,因为我必须在页面加载中显示此控件中的大量记录。请建议我有任何方法可以将分页应用到ListView。

2 个答案:

答案 0 :(得分:0)

您可以通过SQL(TOPLIMIT子句)或LINQ(TAKESKIP函数)在数据源级别应用分页,并跟踪当前页面在全局变量中。然后,当用户在页面之间导航时,您可以动态填充ListView。

实施例

我不知道您的数据源是什么样的,所以我在List<Of Anything>周围编写代码。希望您可以根据您正在使用的集合轻松转换它:

保留表单级变量和全局PageSize变量。说:

Dim mPageNumber As Integer = 0
Const PAGE_SIZE As Integer = 25

创建用于移动到表单上下一页/上一页的按钮。在Click事件中添加以下代码:

mPageNumber += 1 '(or mPageNumber -= 1 in Previous button)
PopulateMyListView()

创建一个更新ListView内容的新私人程序:

Private Sub PopulateMyListView()
     MyListView.Clear()
     dim MyCurrentPageItems = MyItemsList.Skip(mPageNumber * PAGE_SIZE).Take(PAGE_SIZE)

     For Each item In MyCurrentPageItems
         MyListView.Items.Add(item.WhateverPropertyYouWantToShow)
     Next
End Sub

也可以在Form_Load中调用此过程一次。

我手写了上面的代码,所以可能会有小错字等。另外,我没有添加任何绑定的检查,你应该在你的结尾。例如,确保mPageNumber不小于或大于最大页数。您只需将项目总数除以PAGE_SIZE即可找到最大页数。

答案 1 :(得分:0)

正如dotNET所建议的,ListView不会为你做分页部分,因此必须在你的数据访问代码中实现。

至于显示数据页面,如果您希望它与用户无缝连接,那么您可以查看虚拟化ListView。如果您对此感兴趣,请从VirtualMode属性的文档开始,然后从那里开始。

否则,您可以提供Button来前后移动,这将丢弃当前内容并加载一个新页面,这会更简单但对用户来说可能不太好。