以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [分享]通用多级目录树筛选 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30118) |
-- 作者:don -- 发布时间:2013/3/21 12:06:00 -- [分享]通用多级目录树筛选 通殺N級目錄樹,只需據實更改第一句 目錄樹 代碼即可.
Dim Lbs As String() ={"产品","客户","雇员","折扣","日期"} \'目錄樹級數 完善一下代碼: Dim Lbs As String() ={"产品","客户","雇员","折扣","日期"} \'目錄樹級數 Dim trv As WinForm.TreeView = e.Sender Dim nd,nd1 As WinForm.TreeNode Dim flt,s1 As String Dim n1,Inum As Integer nd = trv.SelectedNode For Each nd1 In nd.allNodes \'同步子节点选中状态 nd1.Checked = nd.Checked Next If nd.ParentNode IsNot Nothing Then \'确定父节点选中状态: For n1 = nd.ParentNode.level To 0 Step -1 \' Inum = nd.ParentNode.Nodes.Count \'利用muhua老师的 For Each nd1 In nd.ParentNode.Nodes Inum+ = Val(nd1.Checked) Next nd.ParentNode.Checked = (Inum = 0) nd = nd.ParentNode Next End If For Each nd In trv.AllNodes If nd.Level > 0 AndAlso nd.ParentNode.Checked Then \'如果父节点选中 Continue For \'跳过此节点,处理下一结点 End If If nd.Checked Then n1=0 For Each s1 In nd.FullPath.split("\\") flt+ =iif(n1 =0,") Or (" ," and ") & Lbs(n1) & " = \'" & s1 & "\'" n1+=1 Next End If Next If flt IsNot Nothing Then e.Form.Controls("TextBox1").value = flt.Substring(4) & ")" Tables("订单").Filter = flt.Substring(4) & ")" End If 以下内容只有回复后才可以浏览 [此贴子已经被作者于2013-6-20 7:44:01编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2013/3/21 12:09:00 -- 呵呵,思路不错,不过发现错误,例如先选择PD01,然后展开这个PD01节点,逐个去掉CS01到CS05的选中标记,到最后一个CS05就出错了 |
-- 作者:don -- 发布时间:2013/3/21 12:32:00 -- 以下是引用狐狸爸爸在2013-3-21 12:09:00的发言:
呵呵,思路不错,不过发现错误,例如先选择PD01,然后展开这个PD01节点,逐个去掉CS01到CS05的选中标记,到最后一个CS05就出错了 哈哈,犯了個低級錯誤:沒有判斷Flt是否為空(如空則 flt.Substring(4)報錯!),已更正於1樓! |
-- 作者:狐狸爸爸 -- 发布时间:2013/3/21 12:49:00 -- 顶你上去! |
-- 作者:wjl-se -- 发布时间:2013/3/21 12:58:00 -- 呃的神啊!太好了!! |
-- 作者:唐尸三摆手 -- 发布时间:2013/3/21 13:45:00 -- don兄,顶你。 |
-- 作者:cxabc123 -- 发布时间:2013/3/21 14:20:00 -- 很好,学习了。对后面的代码很不懂
|
-- 作者:老有所乐 -- 发布时间:2013/3/21 14:24:00 -- 大师的精品,切莫错过 |
-- 作者:kylin -- 发布时间:2013/3/21 14:30:00 -- 谢谢,收藏! |
-- 作者:blackzhu -- 发布时间:2013/3/21 14:34:00 -- 頂一下 |