EXTJS的Tree,当子节点全部取消,父节点也取消?求代码!!

如图,其他的都从网上copy代码实现了,就差这了。求大神救命!!意思是:当我用户管理下的5个子节点取消选中时,用户管理也取消选中。... 如图,其他的都从网上copy代码实现了,就差这了。求大神救命!!
意思是:当我用户管理下的5个子节点取消选中时,用户管理也取消选中。
展开
 我来答
luffy1201
推荐于2017-10-04 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:577万
展开全部
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
  <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
  <script type="text/javascript" src="ext/ext-all.js"></script>
 
  <script type="text/javascript">   
   
 Ext.onReady(function() {
  var windowWidth = 1000;
  var windowHeight = 500;
  
  var tree = new Ext.tree.TreePanel({
   width : windowWidth / 3,
   height : windowHeight,
   title : "测试",
   root : new Ext.tree.AsyncTreeNode( {
    text : "请选择功能模块",
    id : 'root',
    children : [ {
     text : "用户管理",
     checked : false,
     children : [ {
      text : "添加用户",
      checked : false,
      leaf:true
     }, {
      text : "修改信息",
      checked : false,
      leaf:true
     }, {
      text : "删除用户",
      checked : false,
      leaf:true
     }, {
      text : "分配角色",
      checked : false,
      leaf:true
     }, {
      text : "充值密码",
      checked : false,
      leaf:true
     } ]
    }]
   }),
   autoScroll : true,
   animate : true,
   lines : false,
   collapseMode : "mini",
   collapsible : true,
   layoutConfig : {
    animate : true
   },
   split : true,
   listeners : {
    checkchange : function(n, flag) {
     if (flag) {
      if (n.parentNode.id != 'root') {
       n.parentNode.getUI().checkbox.checked = true;
       if (n.parentNode.parentNode.id != null
         && n.parentNode.parentNode.id != ""
         && n.parentNode.parentNode.id != 'root') {
        n.parentNode.parentNode.getUI().checkbox.checked = true;
       }
      }
     } else {
      if(n.parentNode.id != 'root'){
       if(flag == false){
        checkChild(n);
       }
      }else
       uncheckNode(n);
     }
    }
   }
  });
  
  function checkChild(node){
    var pNode = node.parentNode;
    for ( var i = 0; i < pNode.childNodes.length; i++) {
      if(pNode != node && pNode.childNodes[i].getUI().checkbox.checked == true) return;
    }
    pNode.getUI().checkbox.checked = false;
  }
  
  function uncheckNode(node) {
   if (node.hasChildNodes) {
    for ( var i = 0; i < node.childNodes.length; i++) {
     node.childNodes[i].getUI().checkbox.checked = false;
     uncheckNode(node.childNodes[i]);
    }
   }
  }
  
  var windowWidth = window.screen.availWidth;
  var style = 'margin-top:50px;margin-left:150px;';
  var el = Ext.get('auto-center').applyStyles(style);
  tree.render(el);
});
 </script>
 </head>
 <body>
 <div id='auto-center'></div>
 </body>
</html>

 

 

简单给你做了个,节点选择的功能如下:

  1. 勾选子节点,父节点会一并选中。

  2. 取消勾选父节点,其下所有子节点会取消选中。

  3. 子节点全部取消选中,则父节点会自动 取消选中。(你的需求)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式