以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论]请问如何让两个筛选树联动 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=153744) |
||||
-- 作者:忆似水流年 -- 发布时间:2020/8/21 10:59:00 -- [讨论]请问如何让两个筛选树联动 最近加了一个左侧导航菜单,所以想缩减筛选树占用的宽度,将原本一个筛选树分拆放进两个TreeView控件里 于是产生两个疑问 1. 如何让这两个筛选树联动?目前是两个控件互相独立筛选的 2.能否做进一个TreeView里? 先谢谢啦:D 窗口afterload里 e.Form.Controls("TreeView1").BuildTree(vars("table1"), "状态|考核体") e.Form.Controls("TreeView2").BuildTree(vars("table1"), "部门大类|部门小类|岗位大类") TreeView1里 Dim nms As String() = {"状态","考核体"} \'指定生成目录树的各列 Dim qts As String() = {"\'","\'"} \'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号 Dim trv As WinForm.TreeView = e.Sender Dim flt As String Dim nd As WinForm.TreeNode For Each nd In e.node.allNodes \'清除子节点的选中标记 nd.Checked = False Next nd = e.Node.ParentNode Do While nd IsNot Nothing \'清除父节点的选中标记 nd.Checked = False nd = nd.ParentNode Loop For Each nd In trv.AllNodes If nd.Checked Then Dim rts() As String = nd.FullPath.Split("\\") Dim val As String = "" For i As Integer = 0 To rts.length - 1 If val > "" Then val = val & " And " End If val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i) Next If flt > "" Then flt = flt & " Or (" & val & ")" Else flt = val End If End If Next Tables("cmst_sh_hr_hmc").Filter = flt TreeView2里 Dim nms As String() = {"部门大类","部门小类","岗位大类"} \'指定生成目录树的各列
Dim qts As String() = {"\'","\'","\'"} \'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号 Dim trv As WinForm.TreeView = e.Sender Dim flt As String Dim nd As WinForm.TreeNode For Each nd In e.node.allNodes \'清除子节点的选中标记 nd.Checked = False Next nd = e.Node.ParentNode Do While nd IsNot Nothing \'清除父节点的选中标记 nd.Checked = False nd = nd.ParentNode Loop For Each nd In trv.AllNodes If nd.Checked Then Dim rts() As String = nd.FullPath.Split("\\") Dim val As String = "" For i As Integer = 0 To rts.length - 1 If val > "" Then val = val & " And " End If val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i) Next If flt > "" Then flt = flt & " Or (" & val & ")" Else flt = val End If End If Next Tables("cmst_sh_hr_hmc").Filter = flt |
||||
-- 作者:有点蓝 -- 发布时间:2020/8/21 11:16:00 -- 截图说明要怎么做联动? |
||||
-- 作者:忆似水流年 -- 发布时间:2020/8/21 11:26:00 -- 蓝大好, 我先勾吴淞 考核体会筛选出吴淞 然后我到下面勾营销,此时筛选出地区里所有营销部门,上面第一次勾的吴淞就失效了 想请教下,代码怎么写可以让两个勾选都生效,另外可不可以放进一个TreeView控件里, 谢谢蓝大啦 |
||||
-- 作者:有点蓝 -- 发布时间:2020/8/21 12:13:00 -- TreeView1里先判断自己的勾选,再同时把TreeView2的勾选判断也添加到TreeView1的条件里,就是把TreeView2的代码复制到TreeView1里合并到一起改改 |
||||
-- 作者:忆似水流年 -- 发布时间:2020/8/21 14:32:00 -- T_T 蓝大 第一步是要改TreeView2里面变量名么=。= 后面完全不知道怎么合并到treeview1了 Dim nms2 As String() = {"部门大类","部门小类","岗位大类"} \'指定生成目录树的各列 Dim qts2 As String() = {"\'","\'","\'"} \'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号Dim trv2 As WinForm.TreeView = e.Sender Dim flt2 As String Dim nd2 As WinForm.TreeNode For Each nd2 In e.node.allNodes \'清除子节点的选中标记 nd2.Checked = False Next nd2 = e.Node.ParentNode Do While nd2 IsNot Nothing \'清除父节点的选中标记 nd2.Checked = False nd2 = nd2.ParentNode Loop For Each nd2 In trv2.AllNodes If nd2.Checked Then Dim rts2() As String = nd2.FullPath.Split("\\") Dim val2 As String = "" For i As Integer = 0 To rts2.length - 1 If val2 > "" Then val2 = val2 & " And " End If val2 = val2 & nms2(i) & " = " & qts2(i) & rts2(i) & qts2(i) Next If flt2 > "" Then flt2 = flt2 & " Or (" & val2 & ")" Else flt2 = val2 End If End If Next Tables("cmst_sh_hr_hmc").Filter = flt2 |
||||
-- 作者:有点蓝 -- 发布时间:2020/8/21 14:35:00 -- 没有必要定义变量,直接使用原来的flt条件变量,在上面继续合并新的条件即可 |
||||
-- 作者:忆似水流年 -- 发布时间:2020/8/21 16:21:00 -- 不好意思呀蓝大 求个treeview1的代码 这个我完全搞不定T_T
|
||||
-- 作者:有点蓝 -- 发布时间:2020/8/21 16:34:00 -- TreeView1里 Dim nms As String() = {"状态","考核体"} \'指定生成目录树的各列 Dim qts As String() = {"\'","\'"} \'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号 Dim trv As WinForm.TreeView = e.Sender Dim flt As String Dim nd As WinForm.TreeNode For Each nd In e.node.allNodes \'清除子节点的选中标记 nd.Checked = False Next nd = e.Node.ParentNode Do While nd IsNot Nothing \'清除父节点的选中标记 nd.Checked = False nd = nd.ParentNode Loop For Each nd In trv.AllNodes If nd.Checked Then Dim rts() As String = nd.FullPath.Split("\\") Dim val As String = "" For i As Integer = 0 To rts.length - 1 If val > "" Then val = val & " And " End If val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i) Next If flt > "" Then flt = flt & " Or (" & val & ")" Else flt = val End If End If Next Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") For Each nd In trv2.AllNodes
If nd.Checked Then Dim rts() As String = nd.FullPath.Split("\\") Dim val As String = "" For i As Integer = 0 To rts.length - 1 If val > "" Then val = val & " And " End If val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i) Next If flt > "" Then flt = flt & " Or (" & val & ")" Else flt = val End If End If Next Tables("cmst_sh_hr_hmc").Filter = flt |
||||
-- 作者:忆似水流年 -- 发布时间:2020/8/22 12:26:00 -- 蓝大 我把代码放到treeview1后 貌似点击treeview2不成功
|
||||
-- 作者:有点蓝 -- 发布时间:2020/8/22 13:34:00 -- 按照8楼同样的方法,把treeview1的设置条件代码也放到treeview2点击节点代码之后 |