ListView和数据表的互动
为了便于学习本节的内容,可以先打开CaseStudy目录下的文件“ListView.Table”,并参考该文件名为“示例十七”的窗口。
ListView本身的数据编辑功能很弱,只能编辑标题(显示多列内容时,第一列作为标题)。
多数时候,我们用ListView只是展示数据,而数据编辑和管理需要通过DataTable和Table来实现。
本节的任务:
1、在ListView中双击某员工,能打开一个编辑窗口来修改此员工的信息。
2、单击增加、删除按钮,可以增加、删除员工。
设计步骤:
1、新建一个窗口,插入一个ListView控件和三个按钮
2、窗口的AfterLoad事件代码设置为:
Dim
lvw
As
WinForm.ListView
=
e.Form.Controls("ListView1")
lvw.View
=
ViewMode.Details
lvw.Images.AddSmallImage("Man",
"Man.ico")
'添加代表男性的图标
lvw.Images.AddSmallImage("Woman",
"Woman.ico")
'添加代表女性的图标
Dim
cls()
As
String
=
{"编号","姓名","部门","职务","性别","地址"}
'定义列名
Dim
wds()
As
String
=
{60,60,60,100,60,140}
'定义列宽
For
i
As
Integer
=
0
To
cls.Length
-
1
'增加列
Dim
c
As
WinForm.ListViewColumn
=
lvw.Columns.Add()
c.Text
=
cls(i)
'指定列标题
c.Name
=
cls(i)
'指定列名
c.Width
=
wds(i)
'指定列宽
Next
For
Each
dr
As
DataRow
In
DataTables("员工").DataRows
'从数据表中提取数据
Dim
vr
As
WinForm.ListViewRow
=
lvw.Rows.Add()
'增加一行
For Each
cl
As
String
In
cls
'逐列取值
vr(cl)
=
dr(cl)
Next
If
dr("性别")
=
"男"
Then
'设置分组
vr.ImageKey
=
"Man"
Else
vr.ImageKey
=
"Woman"
End
If
vr.Tag=
dr
'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next
上述代码中最关键的一行是:
vr.Tag=
dr
'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
我们将ListViewRow对应的DataRow保存在Tag属性中,这样即可在其它事件中,通过ListViewRow的Tag属性获取对应的DataRow。
Tag属性可以存储任何类型的数据,当然多数时候存储的是DataRow、Row或对应的主键值。
3、将ListView的RowActivate事件代码设置为:
Dim
btn As
WinForm.Button
= e.Form.Controls("btnEdit")
btn.PerformClick()
'模拟单击修改按钮
4、三个按钮的代码分别设置为:
按钮 | 代码 |
增加 |
Dim
lvw As
WinForm.ListView
= e.Form.Controls("ListView1") |
删除 |
Dim
lvw As
WinForm.ListView
= e.Form.Controls("ListView1") |
修改 |
Dim
lvw
As
WinForm.ListView
=
e.Form.Controls("ListView1") |