Foxtable(狐表)用户栏目专家坐堂 → [求助]筛选树多选


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

主题:[求助]筛选树多选

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6812 威望:0 精华:1 注册:2012/8/7 22:03:00
[求助]筛选树多选  发帖心情 Post By:2012/8/24 20:38:00 [只看该作者]

 我想做个生产表的多选筛选树,筛选树的节点由我自己设定固定的节点,可下面的代码只能单选,不能多选啊,怎么办呢

 

 

Dim Value()As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Name
    Case 0
        Tables("生产").Filter =" "
End Select
'如果点击的是第一层节点,那么就全部显示数据;相反如果点击的是其他的节点,那么就执行如下的筛选
Select Case  e.node.Name
  Case "YP"
    Tables("生产").Filter = "[品种] = 'YP'"
  Case "JC"
    Tables("生产").Filter = "[品种] = 'JC'"
  Case "BP"
    Tables("生产").Filter = "[品种] = 'BP'"
  Case "YN"
    Tables("生产").Filter = "[品种] = 'YN'"
  Case "BC"
    Tables("生产").Filter = "[品种] = 'BC'"
End Select


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 

 

我想要的是像EXCEL的列表那种的单列多选框


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-8-24 21:35:22编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/24 21:48:00 [只看该作者]

不知这样行不行?

 

Dim s As String
For Each nd As WinForm.TreeNode In e.Form.Controls("TreeView1").AllNodes
    If nd.Checked = True
        s & = ",'" & nd.name & "'"
    End If
Next
If s <> "" Then
    Tables("生产").Filter = "品种 In (" & s.Trim(",") & ")"
End If


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6812 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/8/24 22:04:00 [只看该作者]

谢谢czy    可以多选了,如果把按合金和按客户也可以设置为多选就好了

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/24 22:24:00 [只看该作者]

Dim s As String
For Each nd As WinForm.TreeNode In e.Node.ParentNode.AllNodes
    If nd.Checked = True
        s & = ",'" & nd.name & "'"
    End If
Next
If s <> "" Then
    Tables("生产").Filter = e.Node.ParentNode.name & " In (" & s.Trim(",") & ")"
End If

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6812 威望:0 精华:1 注册:2012/8/7 22:03:00
筛选树  发帖心情 Post By:2012/8/24 22:32:00 [只看该作者]

是这个效果,不过2级节点的目录树如果选中了一级节点的话会报错


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 

我还加了句代码不知道有没影响

 

'如果希望选中某个节点的复选框,其子节点能够同步选中,反之亦然.
'为此只需将目录树的AfterCheckNode事件代码设置为:
For Each nd As WinForm.TreeNode In e.Node.AllNodes
    nd.Checked  = e.Node.Checked
Next

[此贴子已经被作者于2012-8-24 22:34:17编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/25 8:31:00 [只看该作者]

If e.Node.ParentNode Is Nothing Then

    Return

End If

Dim s As String
For Each nd As WinForm.TreeNode In e.Node.ParentNode.AllNodes
    If nd.Checked = True
        s & = ",'" & nd.name & "'"
    End If
Next
If s <> "" Then
    Tables("生产").Filter = e.Node.ParentNode.name & " In (" & s.Trim(",") & ")"
End If


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6812 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/8/25 18:39:00 [只看该作者]

多谢狐爸,不会报错了


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6812 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/8/25 20:54:00 [只看该作者]

多谢各位好心朋友,我把最终做的效果发上来给大家看看 ,由于用的是外部数据源,所以只能解压到D:\My Documents或者重新定向数据源后查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


 回到顶部