方法1:不能用
方法2:没有问题
Dim Filter As String
With e.Form.Controls("地区")
If .Value IsNot Nothing Then
Filter = "地区 = '" & .Value & "'"
End If
End With
With e.Form.Controls("部门")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "部门 in ('" & .Value.replace(",", "','") & "')"
End If
End With
With e.Form.Controls("性别")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "性别 in ('" & .Value.replace(",", "','") & "')"
End If
End With
If Filter > "" Then
DataTables("员工").loadFilter = Filter
DataTables("员工").load
End If
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65, 75) '定义大图标尺寸
lvw.TitleSize = New Size(150, 90) '设置平铺区域的大小
Dim cls() As String = {"姓名", "空行1", "部门", "空行2", "地区", "性别"} '定义列名
For i As Integer = 0 To cls.Length - 1 '增加列
Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
c.Name = cls(i) '指定列名
Next
For Each dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据
Dim Key As String = dr("照片")'获取此员工的照片文件
lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '增加一行
vr.ToolTipText = dr("编号") '设置此行的动态提示
vr.ImageKey = Key '设置图片键值
vr.Group = dr("地区") '指定所属分组
vr("姓名") = dr("姓名")
vr("空行1") = " "
vr("部门") = "部门:" & dr("部门")
vr("空行2") = " "
vr("地区") = "地区:" & dr("地区")
vr("性别") = "性别:" & dr("性别")
Next
lvw.ResumeRedraw() '恢复绘制
方法3:也没有问题
Dim Filter As String
With e.Form.Controls("地区")
If .Value IsNot Nothing Then
Filter = "地区 = '" & .Value & "'"
End If
End With
With e.Form.Controls("部门")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "部门 = '" & .Value & "'"
End If
End With
With e.Form.Controls("性别")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "性别 = '" & .Value & "'"
End If
End With
If Filter > "" Then
DataTables("员工").loadFilter = Filter
DataTables("员工").load
End If
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65, 75) '定义大图标尺寸
lvw.TitleSize = New Size(150, 90) '设置平铺区域的大小
Dim cls() As String = {"姓名", "空行1", "部门", "空行2", "地区", "性别"} '定义列名
For i As Integer = 0 To cls.Length - 1 '增加列
Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
c.Name = cls(i) '指定列名
Next
For Each dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据
Dim Key As String = dr("照片")'获取此员工的照片文件
lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '增加一行
vr.ToolTipText = dr("编号") '设置此行的动态提示
vr.ImageKey = Key '设置图片键值
vr.Group = dr("地区") '指定所属分组
vr("姓名") = dr("姓名")
vr("空行1") = " "
vr("部门") = "部门:" & dr("部门")
vr("空行2") = " "
vr("地区") = "地区:" & dr("地区")
vr("性别") = "性别:" & dr("性别")
Next
lvw.ResumeRedraw() '恢复绘制
老师,方法2与方法3哪个好一些?