转载自: http://www.cnblogs.com/KingStar/archive/2010/06/10/1755299.html
经典的checkbox树默认是不会有联动处理的。这里变量INDEX_CATEGORY_CHECKING
是为了避免各个节点事件触发后的递归调用,从而解决了过多递归的问题。
'checkchange': function(node, checked){
if (!INDEX_CATEGORY_CHECKING) {
INDEX_CATEGORY_CHECKING = true;
// true时,子同父,父也同子
if (checked == true) {
node.attributes.checked = true;
// 父变为true,所有子都跟着变化
(function(node) {
var _this = arguments.callee;
if (!node.isLeaf()) {
node.expand();
node.eachChild(function(child) {
child.ui.toggleCheck(true);
child.attributes.checked = true;
_this.call(_this, child);
});
}
})(node);
// 父变为true,父的父(如果有的话)也应该都为true
(function(node) {
var _this = arguments.callee;
if (node.parentNode && node.parentNode != t.root) {
var pnode = node.parentNode;
pnode.ui.toggleCheck(true);
pnode.attributes.checked = true;
_this.call(_this, pnode);
}
})(node);
} else { // false 时,子同父,但父不一定同子
node.attributes.checked = false;
// 父变为false,所有子跟着变化
(function(node) {
var _this = arguments.callee;
if (!node.isLeaf()) {
node.expand();
node.eachChild(function(child) {
child.ui.toggleCheck(false);
child.attributes.checked = false;
_this.call(_this, child);
});
}
})(node);
// 父变为false,但父的父(如果有的话)不一定变化
(function(node) {
var _this = arguments.callee;
if (node.parentNode && node.parentNode != t.root) {
var pnode = node.parentNode;
var chk = false;
pnode.eachChild(function(child) {
if (child.attributes.checked == true) {
chk = true;
return false;
}
});
if (chk == true) {
return;
} else {
pnode.ui.toggleCheck(false);
pnode.attributes.checked = false;
_this.call(_this, pnode);
}
}
})(node);
}
INDEX_CATEGORY_CHECKING = false;
}
}
分享到:
相关推荐
TreePanel的checkbox节点操作及父子节点联动的演示DEMO
TreePanel的checkbox节点操作及父子节点联动的演示DEMO,前面那个有Bug,选中子节点时,没能选择父节点。 这个版本修正了
treepanel 和 tabpanel 合在一起使用,可直接使用
完美的Extjs4 treePanel节点刷新,函数为自动刷新选中的节点.API看得头疼才别出来的代码.截止我发之前,好像没有谁共享这个功能的函数吧.
学习TreePanel时根据网上的资料自己实现的实例,结构如下: 1. 创建一棵树 2. 使用TreeLoader加载数据生成树 3. 读取本地Json数据生成树 4. 使用Servlet提供数据 5. 树的事件 6. 右键菜单 7. 修改节点的默认图标 8. ...
关于TreePanel的一些文档,有点杂,不过内容比较多
向各位推荐一下用Coolite来部局,用后台数据库数据绑定到TreePanel上,当点不同的节点,在TabPanel上添加一个Tab。并显示要显示的网页。
NULL 博文链接:https://wangtata.iteye.com/blog/678536
可实现选中父节点,自动选中子节点,选中子节点,自动遍历选中父节点
本人自己写的Extjs入门教程,上面实现了treePanel和GridPanel的集成和交互。
主要方法: collapseAll():收缩所有树节点 expandAll():展开所有树节点 getRootNode():获取根节点 getNodeById(String id):获取指定id的节点 expand( [Boolean deep], [Boolean anim],
用ExtJS4实现的treepanel与gridpanel的简单互动案例 包含mvc开发模式与普通开发模式两种 普通开发模式:需要在引入js文件夹中的main.js文件 mvc开发模式:需要引入app文件夹中的app.js文件 适合初学extjs4的朋友
直接可以用的tree,使用JSON。 界面没关 操作方便
基于extjs 3.2,右侧折叠面板,然后面板里面包含了树,点击树节点以后,会把树的href里面的地址加载到右边的tabpanel。代码清晰简单。
获取Extjs中的TreePanel中所有的被checked的叶子节点的id
extjs4 MVC2 TreePanel动态JSON实现 extjs4 MVC2 TreePanel动态JSON实现
NULL 博文链接:https://maoyi606.iteye.com/blog/1782825
里面已经包含了教程、示例代码、要用到的js脚本库和jar包,你随便改改就可以用在自己的项目里
ext.net
ExtJs TreePanel应用ExtJs TreePanel应用