ExtJS学习笔记(十一) Tree的父子级联动选定,和自定义半选状态
2017-01-24 10:17
417 查看
在上一章的基础上添加,上节末尾有源代码地址
Ext.define("Demo.controller.tree.Tree", { extend: "Ext.app.ViewController", alias: "controller.demo_controller_tree", init: function () { this.control({ "demo_view_tree": { checkchange: this.onCheckChange } }); }, onCheckChange: function (node, ischecked) { // 不为空,表示为半选状态,半选之后的状态为选定 if (node.get("cls") != "") { ischecked = true; } var me = this; me.checkedChildNode(node, ischecked, me); me.checkedParentNode(node, ischecked, me); }, // 选中所有的子节点 checkedChildNode: function (node, ischecked, me) { node.set("checked", ischecked); node.set("cls", ""); if (node.hasChildNodes()) { // 是否包含子节点 node.eachChild(function (nodeChild) { me.checkedChildNode(nodeChild, ischecked, me) }); } }, // 选中所有的父节点,半选或者选中 // 在Ext4.0之后,树的选定状态就只有选定和不选定,取消了半选定状态。 // 因此在设计树的时候应该只给叶子节点(leaf)设置checked属性 // 如果一定要使用半选定状态可以参考下述的代码 checkedParentNode: function (node, ischecked, me) { var parent = node.parentNode; var partial = true; if (parent != null) { parent.eachChild(function (parentChild) { // 确定半选状态 // 情况一:子节点的checked与ischecked不一致 // 情况二:子节点为半选状态 parentChild.get("cls") != "" if (parentChild.get("checked") != ischecked || parentChild.get("cls") != "") { // 半选定状态为 : 选定 + 透明度50% parent.set("cls", "partial_select"); parent.set("checked", true); partial = false; return false; } }); if (partial) { parent.set("checked", ischecked); parent.set("cls", ""); } me.checkedParentNode(parent, ischecked, me); } } });
/* 半选状态的css */ .partial_select { filter: alpha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; }
相关文章推荐
- 爬爬爬之路:UI(十一) UITableView(三) 自定义Cell 多Cell混合 自适应高度 及cell的状态控制
- 自定义view单位的转化、状态保存等
- 黑马程序员--Java学习笔记之多线程(自定义线程的两种方式对比、线程状态、线程安全)
- 巧用Zabbix自定义监控Mysql性能状态 推荐
- 十一.状态设计模式
- GridView编辑状态下DropDownList的联动
- 安卓ListView选中后保持高亮状态,且两级联动带图标(升级版)
- Mantis-如何自定义流程状态
- select刷新后,保持选定状态,Cookies存储select选定状态信息
- Vue.js组件tree实现省市多级联动
- UIImagePickerController 状态栏颜色改变,自定义返回按钮
- 自定义组合控件之省市区三级联动选择
- 无刷新省市三级联动自定义组件代码
- Blend 2015 教程 (五) 自定义状态
- Ajax无刷新实现省市联动,并在回发后保留省市下拉框状态
- iOS自定义导航栏-导航栏联动(二)
- 自定义Activity标题栏(Title bar)和窗体显示状态操作(requestWindowFeature()的应用)
- nginx将服务器转入维护状态(自定义503页面)
- Android自定义控件之联动视图 .
- 状态视图与用户自定义数据类型