以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多选筛选树问题,自己把自己搞晕了 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140095) |
||||
-- 作者:foxyuan -- 发布时间:2019/8/29 11:53:00 -- 多选筛选树问题,自己把自己搞晕了 搞了挺长时间,越搞头越大,问题想复杂了 问题: 1)选一个总类下的分类,再选另一个总类下的分类,会报错。 2)反复点显示全部或是某个总类,会不时地出现√出现的不对的情况。 总是照猫画虎,基础还是不扎实,请高手帮忙看看。
|
||||
-- 作者:有点蓝 -- 发布时间:2019/8/29 12:06:00 -- 测试没有问题呀。关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。 另外目录树的勾选操作不能太快,这个问题暂时无法解决
|
||||
-- 作者:foxyuan -- 发布时间:2019/8/29 12:13:00 -- 谢谢。先勾选一个小分类,再去勾选另一个大类下的小分类,肯定会报错的。 |
||||
-- 作者:foxyuan -- 发布时间:2019/8/29 12:16:00 -- 如图。 ![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2019/8/29 13:50:00 -- …… Else For Each nd In e.node.Nodes \'清除子节点选中状态 nd.Checked = False Next If e.node.ParentNode IsNot Nothing Then \'去掉父节点选中状态 e.node.ParentNode.Checked = False End If For Each nd In trv.AllNodes If nd.Checked = True Then If Filter > "" Then Filter = Filter & " Or " \'注意用or而不是And End If Select Case nd.Level Case 0 \'注意下面的条件都要用括号括起来 Dim T1 As String = nd.Text Filter = Filter & "([总类] = \'" & T1 & "\')" Case 1 Dim T1 As String = nd.Text Dim T2 As String = nd.ParentNode.Text Filter = Filter & "( 总类 = \'" & T2 & "\' And 分类 = \'" & T1 & "\')" End Select Else Select Case e.Node.Level Case 0 If nd.Nodes.Count > 0 For Each nd1 In nd.AllNodes nd1.Checked = False Next End If End Select End If Next End If |
||||
-- 作者:foxyuan -- 发布时间:2019/8/29 15:32:00 -- 谢谢蓝大师。按你的代码测了一下,能做到按需筛选了,但与我最初想法不太一致,看看能不能再完美些: 1)做不到选子节点时,父节点也要打个√。或点选父节点时其子节点全部打上√。当然这仅要求在外观上。 2)可以先选大类PD01,再去选第二个大类PD02下的CS01,但做不到先选PD01下的CS01再后选第二个大类PD02。当然操作时可以反过来操作能做到筛选目的。 3)可以同时选不同的大类,也可以同时选不同大类下的小类,还可以先选不同的大类再去选小类,但不能先选任一个小类,再去选别的大类,那样所有的小类会去选。 |
||||
-- 作者:有点蓝 -- 发布时间:2019/8/29 16:14:00 -- 5楼的用法就可以了,搞那么复杂干啥,控制麻烦不说,还给用户增加负担。 用户做个筛选,任意勾选都应该可以继续筛选,还非得勾选大类才能勾选小类,麻烦不!
|
||||
-- 作者:foxyuan -- 发布时间:2019/8/29 17:51:00 -- 有道理。不过没有表达清楚,我是说现在还有这三个问题存在,不是要达成这三条。 |
||||
-- 作者:有点蓝 -- 发布时间:2019/8/30 11:28:00 -- 去掉这段代码 Else Select Case e.Node.Level Case 0 If nd.Nodes.Count > 0 For Each nd1 In nd.AllNodes nd1.Checked = False Next End If End Select |
||||
-- 作者:foxyuan -- 发布时间:2019/8/30 16:35:00 -- ok,谢谢蓝大师 |