按照教程自编代码如下:
设计步骤:
1、新建一个窗口,插入一个ListView控件和三个按钮
2、窗口的AfterLoad事件代码设置为:
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.View = ViewMode.Details
Dim cls() As String = {"客户名称","客户全称","联系人","电话","传真","开户银行","银行帐号","税务登记号"} '定义列名
Dim wds() As String = {80,280,60,140,140,180,180,180} '定义列宽
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
'显示网格线
lvw.View = ViewMode.Details '设置显示模式为详细内容
lvw.GridLines = True
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
vr.Tag= dr '将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next
lvw.ResumeRedraw() '恢复绘制
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 r As Row = Tables("客户信息").AddNew()
Dim cnt As Integer = DataTables("客户信息").DataRows.Count '记录打开窗口前的行数
Forms("客户维护").Open()
If DataTables("客户信息").DataRows.Count = cnt '如果新增行已经保存
Dim vr As WinForm.ListViewRow = lvw.Rows.Add()
For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列取值
vr(cl.Name) = r(cl.Name)
Next
vr.Tag = r.DataRow '将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
End If
|
删除 |
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vr As WinForm.ListViewRow = lvw.Current '获取ListView中选定的行
If vr Is Nothing Then '如果不存在当前行,也就是内有选定任何一行
Return
End If
Dim dr As DataRow = vr.tag '获取此行对应的DataRow
dr.Delete '从DataTable删除行
vr.Delete '从ListView删除行 |
修改 |
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vr As WinForm.ListViewRow = lvw.Current '获取ListView的当前行
If vr Is Nothing Then '如果不存在当前行,也就是内有选定任何一行
Return
End If
Dim dr As DataRow = vr.tag '获取此行对应的DataRow
Dim ps As Integer = Tables("客户信息").FindRow(dr)
If ps >= 0 Then
Tables("客户信息").Position = ps
Forms("客户维护").Open()
For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列更新值
vr(cl.Name) = dr(cl.Name)
Next
End If |
为何删除和修改无法实现,老师们帮忙看看是不是代码有误? 谢谢!