Foxtable(狐表)用户栏目专家坐堂 → 请教,关于目录树根据条件判断,复选框自动选择


  共有14290人关注过本帖树形打印复制链接

主题:请教,关于目录树根据条件判断,复选框自动选择

帅哥哟,离线,有人找我吗?
mr725
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/8 16:52:00 [显示全部帖子]

图片点击可在新窗口打开查看不是有加载条件嘛:

BuildDataTree(DataTable, Filter, Column1, Column2, Column3...)

DataTableName: 数据表名
DataTable:    数据表
Filter:        过滤条件
Column1,Column3,Column3:数据列名称,用这些列的数据生成目录树,可以指定多列。

实例:


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/10 0:35:00 [显示全部帖子]

狐表的这框框有些怪, 从逻辑上说,下级勾选了,上级的框框一定有勾选才是(否则在关闭展开状态时,就不知道下级是否有被勾选的了) ......

不知道大家的逻辑是怎样的~~~~    

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/10 11:52:00 [显示全部帖子]

这个用代码麻烦啊~   我得试一试。。。。。。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/10 12:07:00 [显示全部帖子]

这个是针对二级的目录树(大家可以试一试) :  多级的还没想通啊~  呵呵      请高手赐教::::::::
Dim n as integer = e.Node.FullPath.Split("\").length
Dim Vals() As String = e.Node.FullPath.Split("-:special:1:-)
Dim tr As WinForm.TreeView
tr = Forms("窗口2").Controls("TreeView1")
for i as integer = 0 to tr.Nodes.count-1
    if tr.Nodes(i).text = Vals(0)   
        n = i+1
exit for
    end if
next


If e.Node.Level > 0 
    for ii as integer = 0 to tr.Nodes(n-1).Nodes.count-1         
    if tr.Nodes(n-1).Nodes(ii).checked = true '
            if tr.Nodes(n-1).checked = false
                tr.Nodes(n-1).checked = true
                exit for
            else
                return
            end if
        else
            if tr.Nodes(n-1).checked = true
                tr.Nodes(n-1).checked = false
            end if
        end if
    next
end if

说明: 一级复选框打勾对二级无效, 二级复选框只要有一个打勾,一级框自动勾上,当二级框全部取消后,一级框也自动取消。  


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/10 12:44:00 [显示全部帖子]

真是太好了,ParentNode 就是简单啊~   谢谢reachtone老师!

刚测试了一下,当全部取消下级的勾勾后,上级的勾勾不能自动取消呢~   还是被选中的状态。。。  

另外:CheckedCombobox也有这种情况,郁闷啊~ 

[此贴子已经被作者于2010-2-10 13:16:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/2/10 15:15:00 [显示全部帖子]

以下是引用reachtone在2010-2-10 12:22:00的发言:

不用这么复杂,5行代码就够了:

If e.Node.Checked and e.Node.Level > 0 Then
      If e.Node.ParentNode.Checked = False Then
          e.Node.ParentNode.Checked = True
      End If
End If


以下是引用baoxyang在2010-2-10 14:42:00的发言:

如果是父目录选中,下一级全部选中,如父目录取消选中,下一级自动全部取消,请教如何实现?谢了!

如果是单向选择好办, 如果要双向选择就难办了,缺少个 ChildNode 。
用我前面的代码稍加改动就可以了实现单向选择~ 

[此贴子已经被作者于2010-2-10 15:22:58编辑过]

 回到顶部