Foxtable(狐表)用户栏目专家坐堂 → listview如何实现组合选择输入条件,进行数据的筛选图示化呢?


  共有2940人关注过本帖树形打印复制链接

主题:listview如何实现组合选择输入条件,进行数据的筛选图示化呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
listview如何实现组合选择输入条件,进行数据的筛选图示化呢?  发帖心情 Post By:2020/12/7 12:47:00 [只看该作者]

listview如何实现组合选择输入条件(单位名称  支部名称选择值后),进行数据的筛选图示化呢?

单位名称控件enter事件代码如下:
Dim cmb As WinForm.ComboBox = e.form.Controls("ComboBox1")
cmb.ComboList = DataTables("党员信息").sqlGetComboListString("单位名称")

支部名称控件enter事件代码如下:
Dim cmb As WinForm.ComboBox = e.form.Controls("ComboBox1")
Dim cmb2 As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox1")
cmb2.ComboList = DataTables("党员信息").sqlGetComboListString("支部名称","单位名称='"& cmb.SelectedValue & "'")

生成模式1按钮事件代码如下:
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.LargeIcon '显示模式为大图标
lvw.Images.AddLargeImage("Man", "Man48.ico") '添加代表男性的一对图标
lvw.Images.AddLargeImage("Woman", "Woman48.ico") '添加代表女性的一对图标
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 vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    vr.Text = dr("姓名")  '设置标题
    If dr("性别") = "男" Then '设置分组
        vr.ImageKey = "Man"
    Else
        vr.ImageKey = "Woman"
    End If
vr.Group = dr("支部名称") '指定所属分组
Next
lvw.ResumeRedraw() '恢复绘制

当前运行图如下(系直接点击生成模式1得到的数据)

图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

在生成模式1中事件代码加入如下内容(初步实现先进行数据筛选,然后在生成listview内容,可以实现单个单位和单个支部名称的数据筛选,如何实现多个支部名称或者多个单位名称的数据筛选呢?麻烦老师们指导一下更加快捷高效的代码写法,谢谢!)
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

If Filter > "" Then
    DataTables("党员信息").loadFilter= Filter
    DataTables("党员信息").load
End If
[此贴子已经被作者于2020/12/7 13:28:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/7 13:33:00 [只看该作者]

改为多选组合框:http://www.foxtable.com/webhelp/topics/0940.htm

然后,
Filter = Filter & "支部名称 in ('" & .Value.replace(",","','") & "')"
[此贴子已经被作者于2020/12/7 14:36:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)改为多选组合框:http://www.foxtabl...  发帖心情 Post By:2020/12/7 13:44:00 [只看该作者]

老师 还得麻烦你一下哦   更改后运行效果如下:没有显示生成出数据并listview显示出来

图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看


支部名称在表里面一个党员只能对应一个支部   在多选组合框这里先选择单位后 会把当前单位的所有支部名称显示出来  如果选择了第一 第二支部  想实现这两个支部的数据进行筛选显示 

按楼上操作后,如果我只选一个支部  则可以进行筛选显示  如果我选择两个支部   因为在表中支部名称不是多值字段,所以筛选不到合格数据,需要把多选组合框里面的多值进行拆分  然后一个个的去筛选符合支部名称值的数据
[此贴子已经被作者于2020/12/7 13:51:25编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/7 13:56:00 [只看该作者]

仔细看2楼代码

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)仔细看2楼代码  发帖心情 Post By:2020/12/7 14:03:00 [只看该作者]

代码如下  还是提示查不着数据  麻烦老师啦
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("'","','") & "')"
        MessageBox.Show(Filter)
    End If
End With

If Filter > "" Then
    DataTables("党员信息").loadFilter= Filter
    DataTables("党员信息").load
End If

麻烦老师指导下  进入窗口后在党员信息按钮里面 谢谢

以下内容是专门发给有点蓝浏览



[此贴子已经被作者于2020/12/7 14:18:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/7 14:37:00 [只看该作者]

搞错了,是逗号

Filter = Filter & "支部名称 in ('" & .Value.replace(",","','") & "')"
[此贴子已经被作者于2020/12/7 14:37:07编辑过]

 回到顶部