用分页方式显示大量数据
为了便于学习本节的内容,可以先打开CaseStudy目录下的文件“ListView.Table”,并参考该文件名为“示例十五”的窗口。
面对大量数据,除了虚拟模式,我们还可以自己编码,用分页的方式显示大量的数据。
下面我们就学习如何以分页的方式用ListView显示表中数据,假定每页显示5行。
除了分页显示数据,本节还有一个要点,就是在Foxtable没有窗口级别变量和方法的情况下,如何在窗口的不同事件中共享变量和方法,希望大家留意。
设计步骤:
1、在窗口中插入一个ListView、5个Button,1个Label,
2、将Label的文本设置为1,可见属性设置为False,由于Foxtable并没有提供窗口级别的变量,我们利用这个不可见的Label保存当面页号,方便在本窗口的各事件中调用。
3、将"显示"按钮的Visible属性设置为False,由于Foxtable并没有提供窗口级别的方法,我们利用这个不可见的Button间接实现一个窗口界别的方法,方便在本窗口的各事件中调用。
4、窗口的AfterLoad事件设置为:
Dim
lvw As
WinForm.ListView
= e.Form.Controls("ListView1")
lvw.StopRedraw()
'暂停绘制
lvw.View
= ViewMode.Details
'显示模式为详细内容
lvw.GridLines
= True
'显示网格线
Dim
cls()
As
String
=
{"国家","人口","面积","语言","宗教","洲"}
'指定要显示的各列
Dim
wds()
As
Integer
=
{120,100,130,80,80,80}
'定义列宽
For
i
As
Integer
=
0
To
cls.Length
-
1
Dim
c
As
WinForm.ListViewColumn
=
lvw.Columns.Add()
c.Name
=
cls(i)
'指定列名
c.Text
=
cls(i)'指定列标题
c.Width
=
wds(i)
'指定列宽
Next
lvw.Columns("人口").Text
= "人口(万)"
'修改人口列的标题
lvw.Columns("人口").TextAlign
= HorizontalAlignment.Right
'人口列靠右对齐
lvw.Columns("面积").TextAlign
= HorizontalAlignment.Right
'面积列靠右对齐
lvw.ResumeRedraw()
'恢复绘制
e.Form.Controls("btnShow").PerformClick
'模拟单击显示按钮,显示第一页数据
5、设置各按钮的事件:
按钮 | 代码 |
显示 |
Dim
lvw As
WinForm.ListView
= e.Form.Controls("ListView1") |
第一页 |
Dim
lbl As
WinForm.Label
= e.Form.Controls("Label1") |
上一页 |
Dim
lbl As
WinForm.Label
= e.Form.Controls("Label1") |
下一页 |
Dim
lbl As
WinForm.Label
= e.Form.Controls("Label1") |
最末页 |
Dim
lbl As
WinForm.Label
= e.Form.Controls("Label1") |
提示:
上面的例子用ListView来分页显示DataTable中的数据,有的时候,DataTable自己就是分页加载的, 此时ListView无需考虑分页的问题,只需显示DataTable的所有数据即可。这种情况可以参考该 名为“示例十六”的窗口 ,由于分页加载数据,以及用ListView显示DataTable中所有数据,都已经多次讲述过,我们就不再单独讲述这个例子了。