extjs4 treepanel 动态的加载节点,怎么在选中时,级联选中子节点呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了extjs4 treepanel 动态的加载节点,怎么在选中时,级联选中子节点呢?相关的知识,希望对你有一定的参考价值。

如上图是一个带checkbox的tree,那么此时"联通测试"下面的子节点们还没有加载,如何实现点击checkbox既加载子节点又级联选中子节点呢?
代码参考:
onCheckboxChange : function(e, t)
var item = e.getTarget(this.getItemSelector(),this.getTargetEl()), record;
if(item)
record = this.getRecord(item);
var check = !record.get('checked');
record.set( 'checked', check);
if(check)
record.cascadeBy(function(node)
node.expand()//此时动态展开,store里面已经有子节点,但是在此处node仍然是参数
//没有子节点的参数,此处应做如何处理,才会刷新node的值
node.set('checked',true);
);
else
record.cascadeBy(function( node)
node.set('checked',false);
);



//*****************************************
当前效果

目的 :让子节点也级联选中。
再顶下,大家过来帮吧

Ext.create(\'Ext.tree.Panel\', 
  //添加监听事件
  listeners: 
    checkchange: function(node, state)  
    //如果被勾选的节点有子节点,则将其子节点全部改为根节点状态
      if (node.hasChildNodes()) 
        for (var j = 0; j < node.childNodes.length; j++) 
            node.childNodes[j].set(\'checked\', state);
        
      
    
);追问

哥们儿,问题现在节点是动态加载的 ,你点击的时候它还没有children呢,你懂不?展开之后再点击才有children也就是,你必须要先点击+号展开(动态加载子节点后)然后再选择,现在问题是想点击checkbox就直接展开带加载子节点并且选中!

追答

动态加载节点,是在click事件里边进行了一次ajax请求是吧

现在,你在checkchange里边也加一个ajax请求啊

请求成功之后,你把回来的节点的checked全部改成选中或未选中就可以了

参考技术A onCheckboxChange : function(e, t)
var item = e.getTarget(this.getItemSelector(), this.getTargetEl()), record;
if (item)
record = this.getRecord(item);
var check = !record.get('checked');
record.set('checked', check);
if (check)
record.bubble(function(parentNode)
if(!parentNode.isRoot())
parentNode.set('checked', true);

//parentNode.expand(false, true);
);
record.cascadeBy(function(node)
if(!node.isRoot())
node.set('checked', true);

//node.expand(false, true);
);
else
record.cascadeBy(function(node)
node.set('checked', false);
);


如何在extjs 4.1中的treePanel中移动节点标签的复选框结尾

【中文标题】如何在extjs 4.1中的treePanel中移动节点标签的复选框结尾【英文标题】:how to move checkbox end of node label in treePanel in extjs 4.1 【发布时间】:2016-11-15 06:14:27 【问题描述】:

默认情况下,复选框位于 extjs 4.1 中 treePanel 中节点标签的左侧。 但我想将节点上标签的复选框从左到右移动。

【问题讨论】:

【参考方案1】:

只需将float: right; 应用于树复选框类。检查小提琴 -

http://jsfiddle.net/vdazU/3238/

【讨论】:

以上是关于extjs4 treepanel 动态的加载节点,怎么在选中时,级联选中子节点呢?的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 4 treepanel 重新加载和展开

在 ExtJs 4.1 TreePanel 中隐藏一个节点

在 ExtJs 4.0 TreePanel 中更改文件夹和叶子节点的顺序

如何在extjs 4.1中的treePanel中移动节点标签的复选框结尾

ExtJS treepanel 没有得到真正的子项

无法在 extjs 4 的 Treepanel 中显示 json 数据