VB6之ListView控件实现单选、多选、更新选定列
内容
数据库编程中经常用到ListView控件实现选择后更新选定列内容的操作,通过该文档,读者可以更好的理解ListView控件的常用属性及方法。从而使数据库操作更加友好,直观。
很多读者在使用该控件的时候都会遇到第一列填充不了内容的情况。该情况是因为ListView控件的第一列(图中红方框所示)和后面的列(图中蓝方框所示)表示方法不一样。
红方框部分用ListView1.ListItems.Add方法表示并添加。
蓝方框部分用itmX.SubItems(i)方法表示并添加。起始索引为1 。
本文将详细讲述ListView1实现上图所示功能。
本文的数据库链接已经定义在标准模块中。具体代码如下:
Public Function cnn() As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.Open
"Provider=SQLOLEDB.1;Password=ldg730108;Persist Security
Info=True;User ID=ldg;Initial Catalog=ldg;Data
Source=172.30.76.249"
End Function
一、将数据库内容添加到ListView1控件中
请注意设置ListView1的view、Checkboxs属性。Form_Load具体代码如下:
Private Sub Form_Load()
'设置ListView1的样式为报表样式
ListView1.View = lvwReport
'设置ListView1可以复选
ListView1.Checkboxes = True
'声明一个记录集
Dim rs As ADODB.Recordset
'设置一个新的记录集
Set rs = New ADODB.Recordset
'打开表wink
rs.Open "select * from wink", cnn, adOpenKeyset, adLockOptimistic
'设置ListView1的列标题
Dim clmX As ColumnHeader
Set clmX = ListView1.ColumnHeaders.Add(, , "Id", ListView1.Width / 6)
Set clmX = ListView1.ColumnHeaders.Add(, , "Name", ListView1.Width / 6)
Set clmX = ListView1.ColumnHeaders.Add(, , "Sex", ListView1.Width / 6)
Set clmX = ListView1.ColumnHeaders.Add(, , "Age", ListView1.Width / 6)
Set clmX = ListView1.ColumnHeaders.Add(, , "Address", ListView1.Width / 6)
Set clmX = ListView1.ColumnHeaders.Add(, , "Birth", ListView1.Width / 6)
'将数据库内容添加到ListView1中
Dim itmX As ListItem
While Not rs.EOF
Set itmX = ListView1.ListItems.Add(, ,
rs.Fields("id"))
If Not IsNull(rs!Name) Then
itmX.SubItems(1) = rs.Fields("name")
End If
If Not IsNull(rs!sex) Then
itmX.SubItems(2) = rs.Fields("sex")
End If
If Not IsNull(rs!age) Then
itmX.SubItems(3) = rs.Fields("age")
End If
If Not IsNull(rs!address) Then
itmX.SubItems(4) = rs.Fields("address")
End If
If Not IsNull(rs!birth) Then
itmX.SubItems(5) = rs.Fields("birth")
End If
'移动到下一条记录。
rs.MoveNext
Wend
End Subvb listview控件
二、实现单选功能
将选定的单元格内容输出到Text1控件中。请读者注意第一列表示方法为
ListView1.ListItems(i).SubItems(1)。
Private Sub Command1_Click()
'单选
For i = 1 To ListView1.ListItems.Count
'如果复选框打“√”则把打对号行的第一列内容显示在文本框中。
If ListView1.ListItems(i).Checked = True Then
Text1.Text = ListView1.ListItems(i).SubItems(1)
End If
Next
End Sub
3、 实现全选功能
通过循环将所有
ListView1.ListItems(i).Checked属性设置为true。
Private Sub Command2_Click()
'循环至ListView1的总记录数
For i = 1 To ListView1.ListItems.Count
'全选
ListView1.ListItems(i).Checked = True
Next
End Sub
四、实现全不选功能
通过循环将所有
ListView1.ListItems(i).Checked属性设置为false。
Private Sub Command3_Click()
'循环至ListView1的总记录数
For i = 1 To ListView1.ListItems.Count
'全不选
ListView1.ListItems(i).Checked = False
Next
End Sub
五、实现更新选定列功能
重头戏来了。
通过循环将已经选择的内容放置在数组中。VB6中无可变数组,只好定义了一个100个元素的数组。读者可以根据自己的实际情况进行定义。但不要定义过大以减少系统资源消耗。
通过循环将选定的行的指定列进行更新数据库操作。该实例是将选定列的性别进行更新。读者可以根据自己的实际情况更新一列或若干列内容。
Private Sub Command4_Click()
'多选
'定义一个100个元素的一维数组
Dim tmpArry(100) As String
'循环获得第i行,第一列的内容