dev 的 treelist在加载时根据数据勾选对应项,怎么解决??

暮霭天阔 2014-08-28 09:39:20
dev 的 treelist在加载时根据数据勾选对应项,怎么解决??

是winform方面的程序。如图:


根据数据库中对应权限的数据,在选中角色时对应权限也在treelist勾选中。

现在问题是试过以前用的方法,不能设置对应checkbox为选中状态。

求大神解惑!!!!!
...全文
513 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
神仙颠倒 2016-12-23
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392068270?page=1#post-401912926 我的帖子也想知道怎么写代码啊,我的是网页版的DEV空间 ASPxTreeList1 @duanzi_peng
chyawei1 2015-07-06
  • 打赏
  • 举报
回复
引用 8 楼 u011602624 的回复:
[quote=引用 7 楼 duanzi_peng 的回复:] 判断当前节点的父节点的子节点是否全部选中,都选中则父节点选中,否则半选中状态。
加了两个方法解决了,不过也谢谢你的提醒!!!!! /// <summary> /// 设置子节点的状态 /// </summary> /// <param name="node"></param> /// <param name="check"></param> private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { for (int i = 0; i < node.Nodes.Count; i++) { node.Nodes[i].CheckState = check; SetCheckedChildNodes(node.Nodes[i], check); } } /// <summary> /// 设置父节点的状态 /// </summary> /// <param name="node"></param> /// <param name="check"></param> private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { if (node.ParentNode != null) { bool b = false; CheckState state; for (int i = 0; i < node.ParentNode.Nodes.Count; i++) { state = (CheckState)node.ParentNode.Nodes[i].CheckState; if (!check.Equals(state)) { b = !b; break; } } node.ParentNode.CheckState = b ? CheckState.Indeterminate : check; SetCheckedParentNodes(node.ParentNode, check); } } [/quoten 你是怎么实现的,可以告诉我吗?371055741
暮霭天阔 2014-08-28
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
判断当前节点的父节点的子节点是否全部选中,都选中则父节点选中,否则半选中状态。
加了两个方法解决了,不过也谢谢你的提醒!!!!! /// <summary> /// 设置子节点的状态 /// </summary> /// <param name="node"></param> /// <param name="check"></param> private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { for (int i = 0; i < node.Nodes.Count; i++) { node.Nodes[i].CheckState = check; SetCheckedChildNodes(node.Nodes[i], check); } } /// <summary> /// 设置父节点的状态 /// </summary> /// <param name="node"></param> /// <param name="check"></param> private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { if (node.ParentNode != null) { bool b = false; CheckState state; for (int i = 0; i < node.ParentNode.Nodes.Count; i++) { state = (CheckState)node.ParentNode.Nodes[i].CheckState; if (!check.Equals(state)) { b = !b; break; } } node.ParentNode.CheckState = b ? CheckState.Indeterminate : check; SetCheckedParentNodes(node.ParentNode, check); } }
暮霭天阔 2014-08-28
  • 打赏
  • 举报
回复
不是啊 是加载角色权限数据时 ,treelist那自动选中啊,不是手动去选。意思是每个角色用的权限都不同,但怎么在treelist那勾选出来显示
exception92 2014-08-28
  • 打赏
  • 举报
回复
是 点击文字,前边的Checkbox也选中么??
exception92 2014-08-28
  • 打赏
  • 举报
回复
判断当前节点的父节点的子节点是否全部选中,都选中则父节点选中,否则半选中状态。
暮霭天阔 2014-08-28
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 u011602624 的回复:]
不是啊 是加载角色权限数据时 ,treelist那自动选中啊,不是手动去选。意思是每个角色用的权限都不同,但怎么在treelist那勾选出来显示

你遍历它的 TreeListNode节点,通过 GetDataRecordByNode获取绑定的数据类,根据你的数据类ID,判断是否与传入的值相等,如果相等,就设置Node的Checked为True。[/quote]


子节点可以设置选中了,但对应父节点没有显示半选中状态。这情况如何解决?

要的效果是这样的
exception92 2014-08-28
  • 打赏
  • 举报
回复
引用 4 楼 u011602624 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:]
[quote=引用 2 楼 u011602624 的回复:]
不是啊 是加载角色权限数据时 ,treelist那自动选中啊,不是手动去选。意思是每个角色用的权限都不同,但怎么在treelist那勾选出来显示

你遍历它的 TreeListNode节点,通过 GetDataRecordByNode获取绑定的数据类,根据你的数据类ID,判断是否与传入的值相等,如果相等,就设置Node的Checked为True。[/quote]
怎么遍历他的所有节点? 用foreach (TreeListNode n in treelist1.Nodes) 好像遍历不到子节点。。。。。[/quote]
暮霭天阔 2014-08-28
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 u011602624 的回复:] 不是啊 是加载角色权限数据时 ,treelist那自动选中啊,不是手动去选。意思是每个角色用的权限都不同,但怎么在treelist那勾选出来显示
你遍历它的 TreeListNode节点,通过 GetDataRecordByNode获取绑定的数据类,根据你的数据类ID,判断是否与传入的值相等,如果相等,就设置Node的Checked为True。[/quote] 怎么遍历他的所有节点? 用foreach (TreeListNode n in treelist1.Nodes) 好像遍历不到子节点。。。。。
exception92 2014-08-28
  • 打赏
  • 举报
回复
引用 2 楼 u011602624 的回复:
不是啊 是加载角色权限数据时 ,treelist那自动选中啊,不是手动去选。意思是每个角色用的权限都不同,但怎么在treelist那勾选出来显示
你遍历它的 TreeListNode节点,通过 GetDataRecordByNode获取绑定的数据类,根据你的数据类ID,判断是否与传入的值相等,如果相等,就设置Node的Checked为True。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧