分组显示表中数据
为了便于学习本节的内容,可以先打开CaseStudy目录下的文件“ListView.Table”,并参考该文件名为“示例六”的窗口。
本节的目的是设计一个下图所示的窗口,ListView从数据表中提取数据,并用分组的形式显示各国 的详细信息:
设计步骤:
1、在窗口中分别插入一个ListView、Button控件和CheckBox控件,以及三个RadioButton控件
2、将按钮的Click事件代码设置为:
Dim
lvw
As
WinForm.ListView
= e.Form.Controls("ListView1")
lvw.StopRedraw()
'停止绘制
lvw.Groups.Clear()
'清除原来的分组
lvw.Columns.Clear()
'清除原来的列
lvw.Rows.Clear()
'清除原来的行
lvw.Images.Clear()
'清除原来的图片
lvw.View
=
ViewMode.Details
'显示模式为详细信息
Dim cls()
As
String =
{"国家","人口","面积","语言","宗教"}
'定义列名
Dim
wds()
As
Integer
=
{100,100,150,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
For
Each
zh
As
String
In
DataTables("国家").GetValues("洲")
'增加分组
Dim
grp
As
WinForm.ListViewGroup
= lvw.Groups.Add()
grp.Name
= zh
grp.Text
= zh
Next
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
'指定图标键值
r.Group
= dr("洲")
'指定所属分组
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() '恢复绘制
3、将CheckBox的CheckedChanged事件代码设置为:
Dim
lvw As
WinForm.ListView
= e.Form.Controls("ListView1")
lvw.ShowGroups
= e.Sender.Checked
一些提示:
1、需要向ListView中大量添加行的时候,为提高效率,应先执行StopRedraw方法,暂停绘制ListView,添加行结束后,再执行ResumeRedraw方法,恢复绘制。
2、通过设置ListView的ShowGroups属性,可以在普通模式和分组模式中切换。