ext 级联树节点

引用  http://blog.sina.com.cn/s/blog_815eac8901017otz.html

Ext.create('Ext.tree.Panel', {
  id : 'addRolePanelId2',
  title: '权限',
  region : 'center',
  layout : 'fit',
  height:400,
  buttonAlign : 'center',
  root:{
  id:'root',
  text:'权限列表',
  expanded:true,
  checked : false,
  leaf:false
  },
  store: addRolePermissionStore,    
  autoScroll:true,//自动出现滚动条  
  containerScroll: true,//是否支持滚动条
  rootVisible: true,
  listeners: {
     //添加监听 设置树的节点选择的级联关系
    checkchange: function(node, checked) {
     listenerCheck(node, checked);
  }
  }});
 
2、//添加监听 设置树的节点选择的级联关系
 var listenerCheck = function(node, checked) {
     childHasChecked(node,checked);
           var parentNode = node.parentNode;
           if(parentNode != null) {   
            parentCheck(parentNode,checked);   
           } 
  };
 //级联选中父节点
 var parentCheck = function(node ,checked){    
  var childNodes = node.childNodes;
  for (var i = 0; i < childNodes.length; i++) {
  if (childNodes[i].get('checked')) {
  node.set('checked',checked);
  continue;
  }else{
  node.set('checked',false);
  break;
  }
  };
  var parentNode = node.parentNode;
  if (parentNode != null ) {
  parentCheck(parentNode,checked);
  }
 }
 //级联选择子节点
 var childHasChecked = function (node, checked) {
                  node.cascadeBy(function (child) {
                    child.set("checked",checked)
                  });
               }
 
//上述是单个树的级联
在此基础上做了对ext的重写变成公共的方法

Ext.define('R.selection.View', {
override: 'Ext.tree.View',

//strict: false,

onItemClick: function(record, item, index, e) {
if (e.getTarget(this.expanderSelector, item) && record.isExpandable()) {
this.toggle(record, e.ctrlKey);
return false;
}
var me = this,
item = e.getTarget(me.getItemSelector(), me.getTargetEl());

if (item) {
// me.onCheckChange(me.getRecord(item));
var record = me.getRecord(item);
var checked = record.get('checked');
if (Ext.isBoolean(checked)) {
checked = !checked;
record.set('checked', checked);
this.fireEvent('checkchange', record, checked);
if (record.hasChildNodes()) {
record.cascadeBy(function (child) {
child.set("checked",checked)
});
}

}
}
return this.callParent(arguments);

}


});

、、写博客不是很熟练,不对的地方请指教

posted @ 2020-10-12 18:11  axk  阅读(104)  评论(0)    收藏  举报