Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码


Posted in Javascript onAugust 22, 2017

TreePanel继承自Panel,在ExtJS中使用树控件含有丰富的属性和方法实现复杂的功能。其中Ext.tree.TreeNode代表一个树节点,比较常用的属性包括text、id、icon、checked等、异步树Ext.tree.AsyncTreeNode、树加载器Ext.tree.TreeLoader。下面介绍Extjs 中的 Treepanel 实现菜单级联选中效果。

在 treepanel 里添加以下代码即可实现级联选中效果

主要实现了以下效果:

1.点击父级批量设置所有子节点选中状态

2.点击当前节点寻找所有父级并设置选中状态

3.取消当前节点并取消所有子节点选中状态

4.取消当前节点根据需要取消上级节点的选中状态

listeners:{
  checkchange:function(node,checked,eOpts){
    // 批量设置子节点选中效果
    function setChildChecked(pNode){
      pNode.set('checked',checked);
      pNode.eachChild(function(child){
        arguments.callee(child);
      })
    }
    setChildChecked(node);
    // 当前节点取消选中时 需要判断当前节点的父节点下的所有子节点是否都不是选中状态
    function setParentCheckedFalse(currentNode){
      var parentNode = currentNode.parentNode,
        isValid = true;
      if(parentNode != null){
        if(checked == false){
          parentNode.eachChild(function (child) {
            if(child.get('checked') != false){
              isValid = false;
              return false;
            }
          });
          if(isValid){
            parentNode.set('checked',checked);
          }
        }else{
          parentNode.set('checked',true);
        }
        arguments.callee(parentNode)
      }
    }
    setParentCheckedFalse(node);
  }
}

总结

以上所述是小编给大家介绍的Extjs 中 Treepanel 实现菜单级联选中效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
基于jQuery实现的旋转彩圈实例
Jun 26 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
实现Vue的markdown文档可以在线运行的方法示例
Dec 11 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
分享Angular http interceptors 拦截器使用(推荐)
Nov 10 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 #Javascript
关于JS与jQuery中的文档加载问题
Aug 22 #jQuery
bootstrap confirmation按钮提示组件使用详解
Aug 22 #Javascript
bootstrap multiselect下拉列表功能
Aug 22 #Javascript
浅谈Vue父子组件和非父子组件传值问题
Aug 22 #Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 #Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 #Javascript
You might like
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
JS中表单的使用小结
2014/01/11 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python实现自动重启本程序的方法
2015/07/09 Python
详解Django中的过滤器
2015/07/16 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Python random模块的使用示例
2020/10/10 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
2015年手术室工作总结
2015/05/11 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python