显示表中数据
为了便于学习本节的内容,可以先打开CaseStudy目录下的文件“ListView.Table”,并参考该文件名为“示例四”的窗口。
本节的任务是从一个DataTable中提取数据,生成下图所示的ListView:
设计步骤:
1、在窗口中分别插入一个ListView和Button控件。
2、将按钮的Click事件代码设置为:
Dim
lvw
As
WinForm.ListView
=
e.Form.Controls("ListView1")
lvw.StopRedraw()
'暂停绘制
lvw.Columns.Clear()
'清除原来的列
lvw.Rows.Clear()
'清除原来的行
lvw.Images.Clear()
'清除原来的图片
lvw.View
=
ViewMode.Details
'显示模式为详细信息
lvw.GridLines
= True
'显示网格线
Dim
cls()
As
String
=
{"国家","人口","面积","语言","宗教","洲"}
'指定要显示的各列
Dim
wds()
As
Integer
=
{100,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
'面积列靠右对齐
For Each
dr
As
DataRow
In DataTables("国家").DataRows
'从数据表中提取数据
Dim
Key
As
String
=
dr("图标")
Dim
r
As
WinForm.ListViewRow
=
lvw.Rows.Add()
'增加一行
lvw.Images.AddImage(Key,
Key
&
".ico",
Key
&
"48.ico")
'添加代表这个国家的一对图标
r.ImageKey
=
Key
'指定图标键值
For Each
cl
As
String
In
cls
'逐列取值
Select Case
cl
Case
"人口","面积"
'如果是人口列或面积列
r(cl)
=
format(dr(cl),"#,000")
'则显示千位分割符号
Case Else
r(cl)
=
dr(cl)
End Select
Next
Next
lvw.ResumeRedraw()
'恢复绘制
一些提示:
1、需要向ListView中大量添加行的时候,为提高效率,应先执行StopRedraw方法,暂停绘制ListView,添加行结束后,再执行ResumeRedraw方法,恢复绘制。
2、可以将ListView的GridLines属性设置为True,这样ListView可以显示网格线,外观和普通的表类似。