Foxtable(狐表)用户栏目专家坐堂 → [求助]多选目录树复选框勾选代码问题


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

主题:[求助]多选目录树复选框勾选代码问题

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]多选目录树复选框勾选代码问题  发帖心情 Post By:2019/6/8 16:01:00 [只看该作者]

老师好。想实现:勾选子节点时自动勾选其上级节点(具有子权限必定拥有父权限);取消父节点勾选则全部取消子节点勾选(没有父权限也就没有子权限)。请老师帮助修正代码。谢谢。

[此贴子已经被作者于2019/6/9 21:48:31编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106425 积分:541272 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/6/8 17:11:00 [只看该作者]

If e.Node.ParentNode IsNot Nothing AndAlso e.Node.Checked  Then   '勾选子节点时
    e.Node.ParentNode.Checked = True '勾选父节点(因为具有子权限就必定具有父权限)
End If
If e.Node.Checked = False   '如果取消勾选父节点
    For Each cnd As WinForm.TreeNode In e.Node.Nodes    '遍历节点集合
        Functions.Execute("setChildren",cnd )
    Next
End If


添加一个内部函数setChildren

Dim nd As WinForm.TreeNode = args(0)
For Each cnd As WinForm.TreeNode In nd.Nodes    '遍历节点集合
    cnd.Checked = False    '取消勾选子节点,因为取消父权限就必定没有子权限
    Functions.Execute("setChildren",cnd )
Next


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/8 18:14:00 [只看该作者]

老师好。谢谢老师帮助。但还几有个问题,
    1、勾选子节点时能自动勾选其父节点,但取消父节点的勾选时,其下级子节点不能取消,但能取消最末级子节点的勾选。如果手动全部取消子节点的勾选时,到最后一个(即全部取消完)时,报错“未将对象引用设置到对象的实例。”;

    2、目录树共有4层,如何修改代码来实现:
        勾选时: 若 “勾选第4层子节点时,能自动勾选第3、2、1层父节点; 勾选第3层子节点时,能自动勾选第2、1层父节点;勾选第2层子节点时,能自动勾选第1层父节点;” 。
        取消勾选时:若取消第3层节点勾选,则自动取消第4层子节点勾选; 若取消第2层节点勾选,则自动取消第3、4层子节点勾选;若取消第1层节点勾选,则自动取消第2、3、4层子节点勾选;

     请老师费心帮助指导。谢谢。
[此贴子已经被作者于2019/6/8 18:23:22编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/9 11:13:00 [只看该作者]

1、贴出你所写代码;

 

2、判断层级,如 e.node.level 的值,如果是3(第四层),那就用 e.node.parentnode,e.node.parentnode.parentnode 。。。 分别控制。其它同理。


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/9 11:24:00 [只看该作者]

请老师帮助.谢谢.
[此贴子已经被作者于2019/6/9 21:49:33编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/9 11:38:00 [只看该作者]

取消父节点,子节点全部取消?参考

 

If e.Node.Checked = False   '如果取消勾选父节点
    For Each cnd As WinForm.TreeNode In e.Node.AllNodes    '遍历节点集合
        cnd.Checked = false
    Next
End If

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/9 12:06:00 [只看该作者]

甜老师好.     这个问题如何办:  如果取消所有节点的勾选时,报错“未将对象引用设置到对象的实例。”;请老师指导.谢谢.
[此贴子已经被作者于2019/6/9 12:06:21编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/9 17:28:00 [只看该作者]

删除你原来的代码,6楼代码不会报错。

 

请学会调试定位出错位置。 http://www.foxtable.com/webhelp/scr/1485.htm

 


 回到顶部