以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  ][注意] 和 [讨论 关于“通用可以多选的多层筛选树”的对比情况汇报  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30590)

--  作者:e-png
--  发布时间:2013/3/31 10:42:00
--  ][注意] 和 [讨论 关于“通用可以多选的多层筛选树”的对比情况汇报

参见:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=30499  20楼例子

 

视图中左边的是don老师的,右边的是狐狸爸爸的:

 (说明一下,上面例子可能还是原来他没有更新的代码,don老师在http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=30118&authorid=0&page=3&star=1 1楼已经更新了代码,在此表示歉意了。但原分析就不做修改了,因为那是曾经有过的错误,以便来者借鉴。)

 

情况一:don老师的筛选条件显示 比狐爸的好。筛选条件都是正确的。不过要是来源表量够大的话,狐爸的代码效率恐怕不太好,呵呵。【这是分别点击最末级节点的】

 


图片点击可在新窗口打开查看此主题相关图片如下:左边don的《》右边狐爸的 1.jpg
图片点击可在新窗口打开查看

 

 

情况二:don的筛选条件错误,狐爸的正确。【这是在1的基础上,取消末级中间的日期后】

 


图片点击可在新窗口打开查看此主题相关图片如下:左边don的《》右边狐爸的 2.jpg
图片点击可在新窗口打开查看


 

情况三:don的勾选状态优越(但要取消下下级时筛选条件错误·见2条),狐爸的筛选条件没错,但视觉不好,且不便取消CS02下的下级个节点(要一个个重新来勾选下级 - 不是全选) 

 


图片点击可在新窗口打开查看此主题相关图片如下:左边don的《》右边狐爸的 3.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-4-2 1:34:01编辑过]

--  作者:hanxuntx
--  发布时间:2013/3/31 10:47:00
--  
 楼主有心了
--  作者:e-png
--  发布时间:2013/3/31 10:53:00
--  

情况四:勾选DP02下的0节点和EP04下的全部节点时:don的筛选简洁正确,狐爸的虽然筛选条件正确但看上去挺别扭。 

 


此主题相关图片如下:左边don的《》右边狐爸的 4.jpg
按此在新窗口浏览图片

 

 

情况五:表面上看都只勾选了EP02和EP03两个节点,难道狐爸的筛选条件错误了? 其实狐爸的没有错,原因是上一行节点EP01中已经勾选的好几个下级节点,当收拢EP01节点时就看不到了。  

 


此主题相关图片如下:左边don的《》右边狐爸的 5.jpg
按此在新窗口浏览图片

 

 

 所以,解决下图要求是有必要的:
此主题相关图片如下:gx-.jpg
按此在新窗口浏览图片

 

 

总结:
don 老师的:勾选视觉好,但勾选下下级节点时,上上级节点不同步导致晒选条件错误。且从末级节点网上级节点勾选时,上上级节点(父父节点)也不能自动勾上(同步)也会导致代码错误,结果也和上面五的狐爸的视图一样了,给人予错觉。


狐狸爸爸的:勾选视觉混乱,不清晰,且关闭父节点时,不知道子(子)节点是否有被勾选的。但筛选条件都正确。不过数据量大时效率有疑问哦。

[此贴子已经被作者于2013-3-31 11:13:51编辑过]

--  作者:zerov
--  发布时间:2013/3/31 12:34:00
--  
分析透彻,如何能结合两者优点呢?
--  作者:狐狸爸爸
--  发布时间:2013/4/1 8:36:00
--  

呵呵,关于狐狸老头的分析不正确,因为要筛选所有子节点的时候,其实选择父节点就行,没有必要逐个选择子节点,例如你要筛选某个产品的全部记录,选择这个产品就行,没有必要再逐个选择这个产品下的每个客户。

 

图片点击可在新窗口打开查看


--  作者:e-png
--  发布时间:2013/4/1 9:00:00
--  
以下是引用狐狸爸爸在2013-4-1 8:36:00的发言:

呵呵,关于狐狸老头的分析不正确,因为要筛选所有子节点的时候,其实选择父节点就行,没有必要逐个选择子节点,例如你要筛选某个产品的全部记录,选择这个产品就行,没有必要再逐个选择这个产品下的每个客户。

 

图片点击可在新窗口打开查看

实际上选择上级节点后,要取消某个或几个下级节点的情况非常多吧。换句话说,如果下级节点有十个,我想要的只有八个,那么就要勾选选八次了。  呵呵
另外,当下级节点有被选中时,上级(直到0级)怎样在目录树的复选框里作个标记(不是勾选状态),见3楼最后一个图。


--  作者:狐狸爸爸
--  发布时间:2013/4/1 9:25:00
--  

1、如果设置了子节点的选中状态了,父节点的就会自动取消。

2、这个中间状态的属性,目前没有提供,以后考虑吧。


--  作者:e-png
--  发布时间:2013/4/1 10:14:00
--  

这是我做的:全选子节点而保留父节点的代码,看看可否?

Dim trv As WinForm.TreeView = e.Sender
Dim flt,s1 As String
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
nd = trv.SelectedNode
For Each ndx As WinForm.TreeNode In nd.allNodes 
    ndx.Checked = nd.Checked
Next
pd = e.Node.ParentNode

Do While pd IsNot Nothing  

    If nd.checked = False
        pd.Checked = False
        pd = pd.ParentNode
    ElseIf nd.checked = True
        For Each ndp As WinForm.TreeNode In pd.allNodes
            If ndp.checked = False
                pd.Checked = False
                \'     pd = pd.ParentNode
                Exit For
            Else
                pd.Checked = True
            End If
        Next
        pd = pd.ParentNode
        nd = nd.ParentNode
    End If
Loop

中间状态的属性,希望早日实现,谢谢了。


--  作者:don
--  发布时间:2013/4/1 11:41:00
--  
既然 狐狸老头对楼主的"不实"的分析给予反击,
那俺也不能哑忍:楼主应该是用1楼原文件测试(没有套用1楼贴有完善后的代码),
嘻嘻,套用一句法律用语:对楼主"不实"的分析,保留那个权利~

--  作者:e-png
--  发布时间:2013/4/2 1:26:00
--  

我是用 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=30499&page=5&star=2 中20楼的例子做的分析,

以下是引用夕然在2013-3-30 23:24:00的发言:

 我把don大大的例子和这个例子综合了一下,给大家参考

窗口1 是don大大的

窗口2 是狐爸做的

 

 下载信息  [文件大小:312.0 KB  下载次数:12]
图片点击可在新窗口打开查看点击浏览该文件:多级目录树筛选.table

以为那位狐友已经用你更新后的代码了。没有仔细核对您更新后的代码,万分 sorry

 

只是:右边窗口狐爸的我多加了两列,以便对应分析。。。。

 

没有什么“实不实”的,您作为前辈,对学生的错误指出、纠正就是了吧。

 

其实,我最想要的是7楼狐爸说的那个中间状态~~  呵呵。