以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]多选目录树复选框勾选代码问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136148) |
-- 作者:hanzhang98 -- 发布时间:2019/6/8 16:01:00 -- [求助]多选目录树复选框勾选代码问题 老师好。想实现:勾选子节点时自动勾选其上级节点(具有子权限必定拥有父权限);取消父节点勾选则全部取消子节点勾选(没有父权限也就没有子权限)。请老师帮助修正代码。谢谢。 [此贴子已经被作者于2019/6/9 21:48:31编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/6/9 11:13:00 -- 1、贴出你所写代码;
2、判断层级,如 e.node.level 的值,如果是3(第四层),那就用 e.node.parentnode,e.node.parentnode.parentnode 。。。 分别控制。其它同理。 |
-- 作者:hanzhang98 -- 发布时间:2019/6/9 11:24:00 -- 请老师帮助.谢谢. [此贴子已经被作者于2019/6/9 21:49:33编辑过]
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2019/6/9 12:06:00 -- 甜老师好. 这个问题如何办: 如果取消所有节点的勾选时,报错“未将对象引用设置到对象的实例。”;请老师指导.谢谢. [此贴子已经被作者于2019/6/9 12:06:21编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/6/9 17:28:00 -- 删除你原来的代码,6楼代码不会报错。
请学会调试定位出错位置。 http://www.foxtable.com/webhelp/scr/1485.htm
|