现在有这么一个常见的功能需求:树形控件需要批量勾选,且勾选父节点默认将子节点全部勾上;当子节点全部取消勾选后,父节点的勾选也取消掉;勾选一个子节点,默认就把父节点也置于勾选状态。

最常见的案例就是windows功能,Dev提供了一个很强大的树形控件-TreeList,同样可以实现这些简单效果。

首先我们要知道TreeList自带的勾选控件在哪

treelist.OptionsSelection.MultiSelect = True;
treelist.OptionsSelection.UseIndicatorForSelection = True;
treelist.OptionsView.ShowCheckBoxes = True;

设置好这些属性后,再了解一个事件 treelist_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)

简单理解为 用户更改节点的勾选状态后发生。 当我们勾选其中一个节点后,通过递归的方式自下而上或自上而下去寻找父|子节点。

        //勾选|取消勾选 父节点,递归处理子节点private bool m_SetClick = true; private void SetSubNodeCheck(TreeListNode p_TreeNode, bool p_SelectCheck){m_SetClick = false;foreach (TreeListNode _SubNode in p_TreeNode.Nodes){_SubNode.Checked = p_SelectCheck;SetSubNodeCheck(_SubNode, p_SelectCheck);}}//勾选子节点,父节点同样勾上private void SetParentCheck(TreeListNode p_TreeNode){if (p_TreeNode.Checked && p_TreeNode.ParentNode != null){p_TreeNode.ParentNode.Checked = true;SetParentCheck(p_TreeNode.ParentNode);}}//如果当前分支下最后一个勾选的子节点取消勾选,父节点勾选状态取消private void SetParentNotCheck(TreeListNode p_TreeNode){if (!p_TreeNode.Checked && p_TreeNode.ParentNode != null){foreach (TreeListNode _Node in p_TreeNode.ParentNode.Nodes){if (_Node.Checked) return;}p_TreeNode.ParentNode.Checked = false;SetParentNotCheck(p_TreeNode.ParentNode);}}private void tlBoi_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e){// 禁用TreeView视图重绘的功能。tlDetail.BeginUpdate();if (m_SetClick){SetSubNodeCheck(e.Node, e.Node.Checked);SetParentCheck(e.Node);SetParentNotCheck(e.Node);m_SetClick = true;}// 启用TreeView视图重绘的功能。tlDetail.EndUpdate();}

TreeList自带勾选框批量勾选基本就这么多东西,当然还有其它方式可以实现批量勾选,比如:增加勾选列,列中关联checkEdit控件。这里就不详细说了。

TreeList自带勾选框实现批量勾选相关推荐

  1. 使复选框选中_勾选复选框单元格变色,自动计数,在Excel中是如何实现的?

    Excel中,我们经常会使用复选框来打勾打叉,这是复选框最基本的功能,相信很多小伙伴都会,但今天我跟大家分享的是复选框的其他操作技巧,勾选复选框变色,统计人数. 下图中,我们要利用复选框是否打钩来确定 ...

  2. 饿了么UI elementUI中的el-table勾选框设置默认勾选、禁用

    最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark="1",是勾选状态且该勾选框变为禁用状态:反 ...

  3. 在WORD或EXCEL选框中打勾打叉的方法

    在WORD或EXCEL选框中打勾打叉的方法 转自 http://hi.baidu.com/wanglixi16888/blog/item/a13c4dfb8782810ea8d31147.html 所 ...

  4. elementUI中的el-table勾选框设置默认勾选、禁用

    elementUI中的el-table勾选框设置默认勾选.禁用 最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark= ...

  5. html5 多选框控件,复选框和单选框都属于控件吗

    单选框和复选框的区别是什么? 单选框和复选框的区别是什么? 详细一点-. (1)复选框可以允许你选择多个设置,而单选框则允许你选择一个设置: 这两个选框的区别是一个通过用圆圈表示,一个通过用方框表示. ...

  6. 【react】全选复选框和单个复选框联动功能

    需求: 全选复选框 显示情况:点击全选复选框时,所有单个复选框状态变为被勾选状态:并且每一单个复选框边框颜色为蓝色:当点击取消全选复选框被勾选的状态时,所有单个复选框状态恢复初始状态(未被勾选状态). ...

  7. easyui数据表格显示复选框_EasyUI DataGrid 复选框

    使用checkbox,用户可以选定/取消数据行. 添加checkbox列,我们简单的添加列的checkbox属性,并且设置为true.代码像这样: $('#tt').datagrid({ title: ...

  8. Winform中给DataGridView添加多选框列并获取选中行的内容

    场景 使用NPOI导入Excel并赋值给DataTable,然后显示在DataGrdView上,并且添加多选框,然后获取选中行的内容. Winform中使用NPOI实现Excel导入并赋值给DataT ...

  9. html bootstrap复选框全选,javascript+bootstrap+html实现层级多选框全层全选和多选功能代码实例...

    想做一个先按层级排序并可以多选的功能,首先倾向于用多层标签式的,直接选定加在文本域里,接下来通过本文给大家介绍html+javascript+bootstrap实现层级多选框全层全选和多选功能,需要的 ...

最新文章

  1. 将TVM集成到PyTorch上
  2. index.html安全文件,restorecon - 恢复文件的安全上下文
  3. 确定第十五届安徽赛区国赛奖项数量
  4. Java进阶知识-数组类型
  5. C++面试宝典2011版
  6. centos 6.5 安装openssl
  7. BCB6.0下安装Indy9
  8. 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
  9. python封装 继承 多态 举例_python面向对象中的封装、继承、多态
  10. 用户权限 英文_伴鱼绘本终身VIP卡+自然拼读精品课,完课返461元!英文原版绘本...
  11. MySQL数据库的基本操作命令
  12. 李迟2022年2月知识总结
  13. [转载] 【Python】set() 集合操作与运算 元素输出顺序
  14. 23_Shell语言————位置变量($@、$、$#、shift)
  15. Office 2007中的config.xml个性定制说明
  16. 大学生python心得1000字_大学生读书心得1000字3篇
  17. mac用什么软件测试硬盘好坏,Mac怎么测试硬盘速度?
  18. 《看清你的思维图谱》读书笔记
  19. linux使用wine安装程序,使用wine安装软件 怎么使用wine安装软件
  20. 做社交电商,你还没有用小程序?

热门文章

  1. 中望3D 2021“基线标注”和“连续标注”
  2. 做存储双活是好,但不能白白浪费了存储阵列软件
  3. .Net Core(二)EFCore
  4. 码农必备?清华大学开源了一款写代码神器。。。
  5. 检测苹果推送证书有效性
  6. [Mac电脑版微信】双开方法,最简单的微信多开教程,不需要任何三方工具
  7. egret引擎html5 3d,白鹭引擎(Egret Engine)
  8. 蓝海讯通OneAPM产品简介
  9. Linux tricks
  10. 最没用的捐助,最真心的付出!转一篇戒嗔最近才写出来的,我较喜欢的佛学类通俗化文章,是关于地震捐款的。我只改了一个错别字。看得出来戒嗔是用的拼音输入法。