关于Ext的checkboxtree的实例,相当经典。
/**
* @class Ext.tree.TreeCheckNodeUI
* @extends Ext.tree.TreeNodeUI
*
* 对 Ext.tree.TreeNodeUI 进行checkbox功能的扩展,后台返回的结点信息不用非要包含checked属性
*
* 扩展的功能点有:
* 一、支持只对树的叶子进行选择
* 只有当返回的树结点属性leaf = true 时,结点才有checkbox可选
* 使用时,只需在声明树时,加上属性 onlyLeafCheckable: true 既可,默认是false
*
* 二、支持对树的单选
* 只允许选择一个结点
* 使用时,只需在声明树时,加上属性 checkModel: "single" 既可
*
* 二、支持对树的级联多选
* 当选择结点时,自动选择该结点下的所有子结点,以及该结点的所有父结点(根结点除外),特别是支持异步,当子结点还没显示时,会从后台取得子结点,然后将其选中/取消选中
* 使用时,只需在声明树时,加上属性 checkModel: "cascade" 既可
*
* 三、添加"check"事件
* 该事件会在树结点的checkbox发生改变时触发
* 使用时,只需给树注册事件,如:
* tree.on("check",function(node,checked){...});
*
* 默认情况下,checkModel为'multiple',也就是多选,onlyLeafCheckable为false,所有结点都可选
*
* 使用方法:在loader里加上 baseAttrs:{uiProvider:Ext.tree.TreeCheckNodeUI} 既可.
* 例如:
* var tree = new Ext.tree.TreePanel({
* el:'tree-ct',
* width:568,
* height:300,
* checkModel: 'cascade', //对树的级联多选
* onlyLeafCheckable: false,//对树所有结点都可选
* animate: false,
* rootVisible: false,
* autoScroll:true,
* loader: new Ext.tree.DWRTreeLoader({
* dwrCall:Tmplt.getTmpltTree,
* baseAttrs: { uiProvider: Ext.tree.TreeCheckNodeUI } //添加 uiProvider 属性
* }),
* root: new Ext.tree.AsyncTreeNode({ id:'0' })
* });
* tree.on("check",function(node,checked){alert(node.text+" = "+checked)}); //注册"check"事件
* tree.render();
*
*/
Ext.tree.TreeCheckNodeUI = function() {
//'multiple':多选; 'single':单选; 'cascade':级联多选
this.checkModel = 'multiple';
//only leaf can checked
this.onlyLeafCheckable = false;
Ext.tree.TreeCheckNodeUI.superclass.constructor.apply(this, arguments);
};
Ext.extend(Ext.tree.TreeCheckNodeUI, Ext.tree.TreeNodeUI, {
renderElements : function(n, a, targetNode, bulkRender){
var tree = n.getOwnerTree();
this.checkModel = tree.checkModel || this.checkModel;
this.onlyLeafCheckable = tree.onlyLeafCheckable || false;
// add some indent caching, this helps performance when rendering a large tree
this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
var cb = (!this.onlyLeafCheckable || a.leaf);
var href = a.href ? a.href : Ext.isGecko ? "" : "#";
var buf = ['<LI class=x-tree-node><DIV class="x-tree-node-el x-tree-node-leaf x-unselectable ', a.cls,'" ext:tree-node-id="',n.id,'" unselectable="on">',
'<SPAN class=x-tree-node-indent>',this.indentMarkup,"</SPAN>",
'<IMG class="x-tree-ec-icon x-tree-elbow" alt="" src="', this.emptyIcon, '">',
'<IMG class="x-tree-node-icon',(a.icon ? " alt="" src="', a.icon || this.emptyIcon, '" unselectable="on">',
cb ? ('<INPUT class=x-tree-node-cb type=checkbox value=on>' : '/>')) : '',
'<A class=x-tree-node-anchor hideFocus tabIndex=1 href="',href,'" target="'+a.hrefTarget+'" a.hreftarget=""></A></DIV>",
'<UL class=x-tree-node-ct style="DISPLAY: none"> </UL>',
""].join('');
var nel;
if(bulkRender !== true && n.nextSibling && (nel = n.nextSibling.ui.getEl())){
this.wrap = Ext.DomHelper.insertHtml("beforeBegin", nel, buf);
}else{
this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf);
}
this.elNode = this.wrap.childNodes[0];
this.ctNode = this.wrap.childNodes[1];
var cs = this.elNode.childNodes;
this.indentNode = cs[0];
this.ecNode = cs[1];
this.iconNode = cs[2];
var index = 3;
if(cb){
this.checkbox = cs[3];
Ext.fly(this.checkbox).on('click', this.check.createDelegate(this,[null]));
index++;
}
this.anchor = cs[index];
this.textNode = cs[index].firstChild;
},
// private
check : function(checked){
var n = this.node;
var tree = n.getOwnerTree();
this.checkModel = tree.checkModel || this.checkModel;
if( checked === null ) {
checked = this.checkbox.checked;
} else {
this.checkbox.checked = checked;
}
n.attributes.checked = checked;
tree.fireEvent('check', n, checked);
if(!this.onlyLeafCheckable && this.checkModel == 'cascade'){
var parentNode = n.parentNode;
if(parentNode !== null) {
this.parentCheck(parentNode,checked);
}
if( !n.expanded && !n.childrenRendered ) {
n.expand(false,false,this.childCheck);
}
else {
this.childCheck(n);
}
}else if(this.checkModel == 'single'){
var checkedNodes = tree.getChecked();
for(var i=0;i0){
for(var i=0;i</LI>
分享到:
相关推荐
在IT领域,"带checkbox的树"(Checkbox Tree)是一种常见的UI组件,广泛应用于数据管理和配置界面中。这种组件结合了树形结构和复选框的功能,用户可以通过选择或取消选择节点来对数据进行多选操作,使得在层级关系...
在Flex开发中,CheckBoxTree是一种常用的UI组件,它结合了树形结构和复选框功能,使得用户可以方便地对树节点进行多选操作。在本文中,我们将深入探讨如何在Flex中实现CheckBoxTree,以及相关的关键技术点。 首先,...
本篇文章将详细讲解如何在 Laravel-Admin 中使用 "CheckboxTree" 组件,这是一个用于实现树状复选框功能的插件,特别适合处理涉及多级分类或权限分配的问题。 首先,我们需要了解 "CheckboxTree" 的基本概念。在 ...
CheckBoxTree是一种在用户界面设计中常见的自定义控件,它结合了树形结构和复选框的功能,使得用户能够以图形化的方式对树状数据结构进行多选操作。这种控件广泛应用于各种软件和Web应用中,特别是在需要用户对层次...
无限级多选树型菜单(Checkbox Tree)是一种常见的UI组件,尤其在数据管理、权限配置、目录结构展示等场景中广泛应用。它结合了树形结构和复选框元素,允许用户进行多级选择,实现对数据层次化、递归式的操作。在...
ExtJs4 Checkbox Tree是基于ExtJs 4框架实现的一种特殊树形组件,它在传统的树形结构基础上增加了复选框功能。这种组件常用于需要用户多选树形数据的场景,比如权限设置、目录选择等。下面将详细介绍ExtJs4 Checkbox...
在Flex 3.5开发中,我们经常遇到需要创建具有交互性和可视复杂性的用户界面,其中一个常见的需求就是构建一个带有复选框的树形结构,也就是所谓的“复选框树”(CheckBoxTree)。这样的控件允许用户通过复选框来选择或...
有了自定义的 TreeNode 和 TreeCellRenderer,我们可以创建一个 CheckBoxTree 并设置它。下面是如何在 Java Swing 应用程序中使用这些组件的示例: ```java import javax.swing.*; import javax.swing.tree....
"Checkbox Tree"是这种树结构的一个扩展,它在每个节点上添加了复选框,允许用户进行多选操作,从而在数据筛选、权限设置等方面提供了更多的交互可能性。 在JavaScript中实现树形结构,通常会用到一些库或框架,如...
在ExtJS中,Checkbox Tree是一种特殊的树形组件,它允许用户通过复选框选择树结构中的节点。这个"checkbox tree extjs2"主题主要涉及如何在ExtJS 2版本中实现带有复选框功能的树形控件。 在ExtJS 2中,Checkbox ...
在Flex中,Tree组件是用于显示层次结构数据的控件,而"flex带复选框的tree"(Flex CheckboxTree)则是对Tree组件的一种扩展,增加了复选框功能,用户可以对树形结构的节点进行选择或全选操作,常用于权限管理、配置...
在Flex开发中,"flex checkboxtree复选树形下拉框"是一种常见的用户界面组件,它结合了树形结构和复选框的功能,允许用户在层次结构中进行多选操作。这种组件通常用于数据筛选、配置设置或者层级分类的选择场景。在...
《jQuery Checkbox Tree Editor v1.0:构建动态交互的树形复选框编辑器》 在Web开发领域,用户界面的交互性和易用性是提升用户体验的关键因素之一。jQuery作为一个强大的JavaScript库,提供了丰富的功能来简化DOM...
`CheckboxTree`和可添加/关闭的`TabPanel`是Flex中常见的组件,用于提供用户友好的交互界面。这篇博客文章《flex checkboxtree 和可增加面板,可关闭的tab页》可能详细讲解了如何在Flex应用中实现这两个功能。 `...
在前端开发中,CheckBox Tree(复选框树)是一种常见的组件,用于展示具有层级关系的数据,并支持用户进行多级选择。这个"纯JS+HTML写的checkBox Tree 级联选中"实例,解决了其他示例中可能存在的BUG,提供了一个...
在IT行业中,`checkBoxTree`是一种常见的用户界面组件,它结合了复选框(checkbox)与树形结构(tree),通常用于数据组织和选择操作。这个组件允许用户以层次结构的方式选择一组相关的项,其中父节点的状态依赖于其...
在这个文件中,开发者可能创建了一个`CheckBoxTree`实例,指定了数据源,并绑定了相应的事件处理函数,如`itemClick`或`nodeCheckChange`。同时,MXML文件通常也会包含界面布局和样式设置。 综上所述,`Flex ...
Java带复选框的树(Java CheckBox Tree)实现和应用 Java带复选框的树(Java CheckBox Tree)是一种特殊的树形控件,在Java Swing开发中经常被使用。它的实现和应用主要包含了以下几个方面的知识点: 首先,Java ...