以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]筛选树多选  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22832)

--  作者:nblwar
--  发布时间: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
--  发布时间: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
--  发布时间:2012/8/24 22:04:00
--  
谢谢czy    可以多选了,如果把按合金和按客户也可以设置为多选就好了
--  作者:czy
--  发布时间: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
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2012/8/25 18:39:00
--  

多谢狐爸,不会报错了


--  作者:nblwar
--  发布时间:2012/8/25 20:54:00
--  

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

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