我正在使用带有 ListView 控件的2005年vb.net的 windows 。现在我想将分页应用于ListView,因为我必须在页面加载中显示此控件中的大量记录。请建议我有任何方法可以将分页应用到ListView。
答案 0 :(得分:0)
您可以通过SQL(TOP
和LIMIT
子句)或LINQ(TAKE
和SKIP
函数)在数据源级别应用分页,并跟踪当前页面在全局变量中。然后,当用户在页面之间导航时,您可以动态填充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
来前后移动,这将丢弃当前内容并加载一个新页面,这会更简单但对用户来说可能不太好。