关于textjs的tree带复选框的树

通过查阅一些资料和自己之前了解到的一些相关知识,有时项目中需要用到。话不多说,先看一下效果图:

我写的这人员选择的树,主要是改写了TreePanel,如下代码:

ExtendTreePanel.js (该文件中可以写一些触发事件)

Ext.namespace(‘Ext.ysq‘);//Ext.namespace方法定义一个管理类的包,类似Java中定义的包名,目的是建立自己的一个对象名,方便管理,防止重复
Ext.ysq.ExtendTreePanel = Ext.extend(Ext.tree.TreePanel,{
    initComponent:function(){
        this.addEvents(//自定义事件
            ‘nodechecked‘
        );

        this.addListener({
            checkchange:{//当一个带有复选框的节点的复选框选中状态发生变化时触发
                fn:function(node,checked){
                    if(!node.loaded){//子节点是否加载
                        node.expand();
                    }
                    this.selectChildNodes(node,checked);//选定子节点

                    if(node.parentNode){//是否为父节点
                        this.selectParentNodes(node,checked);//是否选定父节点
                    }
                },
                scope:this
            }
        });
        Ext.ysq.ExtendTreePanel.superclass.initComponent.call(this);//直接调用父类的构造函数,或者一些属性
    },
    selectChildNodes:function(Node,checked){
        Node.eachChild(function(node){
            node.attributes.checked = checked;
            node.getUI().toggleCheck(checked);
            if(!node.leaf){
                if(!node.loaded){
                    node.expand();
                }
                this.selectChildNodes(node,checked);
            }
        },this);
    },
    selectParentNodes:function(Node,checked){//判断父节点选中,子节点全部被选中
        Node.eachChild(function(node){
          node.getUI().toggleCheck(checked);
        },this);
    }
});    

所需要展示的信息树:
ExtendTreeTest.js:

var extPanel = new Ext.ysq.ExtendTreePanel({
          title:‘选择人员信息‘,
          titleCollapse:false,
          useArrows:true,
          root:new Ext.tree.AsyncTreeNode({
            id:‘rootNode‘,
            checked:false,
            allowDrag:false,
            //expanded: true,  //从该节点开始,展开节点(不级联到下一节点)
            leaf:false,
            icon:‘./image/im16x16.gif‘,
            expandable:true,
            lines:true,//节点之间连接的横竖线
            //animate : true,//设置为true以启用展开/收缩时的动画效果
            singleClickExpand:true,//用单击文本展开,默认为双击
            loader: new Ext.tree.TreeLoader(),
            text:‘通讯录信息‘,
            children:[
                        {text:‘城建办‘,
                         leaf:false,
                         icon:‘./image/im16x16.gif‘,
                         checked:false,
                         children:[
                               {
                                text:‘李昆学‘,
                                leaf:true,
                                icon:‘./image/user_suit.gif‘,
                                checked:false
                              },
                              {
                                text:‘张馨文‘,
                                leaf:true,
                                icon:‘./image/user_suit.gif‘,
                                checked:false
                              }
                             ]
                        },
                        {text:‘总工会‘,
                         leaf:false,
                         icon:‘./image/im16x16.gif‘,
                         checked:false,
                         children:[
                              {
                                text:‘黄海成‘,
                                leaf:true,
                                icon:‘./image/user_suit.gif‘,
                                 checked:false
                             },
                             {
                                text:‘徐进新‘,
                                leaf:true,
                                icon:‘./image/user_suit.gif‘,
                                 checked:false
                             }
                            ]
                        }
                     ]
          })
      });

      var win =  new Ext.Window({
            title:‘人员选择窗口‘,
            width:420,
            height:380,
            frame:true,
            border:false,
            layout:‘fit‘,
            buttonAlign:‘center‘,
            draggable:false,
            closable:false,
            modal:true,
            items:[extPanel],
            buttons : [{
                text : ‘传阅‘,
                handler : function() {

                }
            }, {
                text : ‘关闭‘,
                handler : function() {

                }}]
      });

/*var dealpanel = new Ext.Panel({
    border : false,
    title : ‘传阅人员‘,
    layout : ‘fit‘,
    height : 380,
    width : 420,
    autoScroll : true,
    items : [extPanel]
});*/

Ext.onReady(function(){
    //Ext.QuickTips.init();
    //dealpanel.render("tab");
    win.show();
});

最后,附带一些有关tree中的配置属性:(这些都可以在api中查看,转载)

Extjs tree的相关方法及配置项

Ext.tree.TreePanel

主要配置项:

root:树的根节点。

rootVisible:是否显示根节点,默认为true。

useArrows:是否在树中使用Vista样式箭头,默认为false。

lines:是否显示树线,默认为true。

loader:树节点的加载器,默认为Ext.tree.TreeLoader。

selModel:树的选择模式,默认为Ext.tree.DefaultSelectionModel。

pathSeparator:树节点路径的分隔符,默认为“/”。

singleExpand:是否一次只展开树中的一个节点,默认为true。

requestMethod:请求方法,可选值有POST、GET。

containerScroll:是否将树形面板注册到滚动管理器ScrollManager中。

主要方法:

collapseAll():收缩所有树节点

expandAll():展开所有树节点

getRootNode():获取根节点

getNodeById(String id):获取指定id的节点

expand( [Boolean deep], [Boolean anim], [Function callback], [Object scope] )展开panel的body以便让其变得可见

expandPath( String path, [String attr], [Function callback] )展开当前TreePanel中的指定路

getChecked( [String attribute], [TreeNode startNode] )获得选中的节点列表,或者被选中节点的某个指定的属性数组

selectPath( String path, [String attr], [Function callback] ) 从树中选中所给路径的节点

getSelectionModel():返回此TreePanel使用的选择模型

Ext.data.Node

主要配置项:

id:节点id

leaf:当前节点是否为叶子节点

主要属性:

id:节点id

attributes:节点属性的集合

parentNode:当前节点的父节点

childNodes:当前节点所有子节点组成的数组

firstChild:当前节点的第一个直接子节点,如果没有则为null值

lastChild:当前节点的最后一个直接子节点,如果没有则为null值

nextSibling:当前节点的下一个兄弟节点,如果没有则为null值

previousSibling:当前节点的前一个兄弟节点,如果没有则为null值

主要方法:

a( Node/Array node ):追加新的子节点

bubble( Function fn, [Object scope], [Array args] ):从当前节点开始向上迭代调用指定函数,如果指定函数返

回false则将终止迭代。

args:传入函数中的参数,默认为当前节点

cascade( Function fn, [Object scope], [Array args] ):从当前节点开始向下迭代调用指定函数,如果指定函数返回false则将终止迭代。

contains( Node node ):当前节点是否包含指定子节点。

eachChild( Function fn, [Object scope], [Array args] ):迭代当前节点的所有子节点调用指定函数,如果指定函

数返回false则将终止迭代。

findChild( String attribute, Mixed value ):查找具有指定属性的第一个子节点。

findChildBy( Function fn, [Object scope] ):根据自定义函数查找第一个符合要求的子节点,如果自定义函数返回

true则说明匹配成功。

getDepth():取得当前节点的深度,根节点的深度为0

getOwnerTree():取得当前节点所在树。

getPath( [String attr] ):取得当前节点对应的路径,这个路径在程序中可用于展开或者选择节点。

attr:用于查找路径的属性,默认为节点id

hasChildNodes():是否有子节点

indexOf( Node node ):取得指定子节点的索引值,未找到返回-1。

insertBefore( Node node, Node refNode ):在当前节点的指定子节点之前插入一个新的子节点。

node:要插入的新节点

isAncestor( Node node ):判断指定节点是否为当前节点的父节点(可以是任何一级中的父节点)。

isFirst():是否为父节点的第一个子节点。

isLast():是否为父节点的最后一个子节点。

isLeaf():是否为叶子节点。

item( Number index ):取得指定索引的子节点。

remove():从父节点中删除当前节点。

removeChild( Node node ):删除当前节点的指定子节点。

replaceChild( Node newChild, Node oldChild ):用新的子节点替换当前节点的指定子节点。

sort( Function fn, [Object scope] ):用指定的排序函数为当前节点的子节点进行排序。

Ext.tree.TreeNode

主要配置项:

text:节点上的文本信息

qtip:节点上的提示信息

icon:节点图标对应的路径

iconCls:应用到节点图标上的样式

checked:当前节点的选择状态

true:在节点前显示一个选中状态的复选框

false:在节点前显示一个未选中状态的复选框

不指定该值:不显示任何复选框

href:节点的连接属性,默认为#

hrefTarget:显示节点连接的目标框架

editable:是否允许编辑,默认为true

expanded:是否展开节点,默认为false

disabled:是否禁用节点,默认为false

singleClickExpand:是否通过单击方式展开节点

allowChildren:是否允许当前节点具有子节点,默认为true

expandable:当不含子节点时,是否总显示一个加减图标,默认为false

uiProvider:节点的UI类,默认为Ext.tree.TreeNodeUI

主要属性:

text:节点上的文本信息

disabled:当前节点是否被禁用

主要方法:

collapse( [Boolean deep], [Boolean anim], [Function callback], [Object scope] ):收缩当前节点

deep:是否级联收缩全部子节点

collapseChildNodes( [Boolean deep] ):收缩所有子节点

disable():禁用当前节点

enable():启用当前节点

ensureVisible( [Function callback], [Object scope] ):确保所有父节点都是展开的

expand( [Boolean deep], [Boolean anim], [Function callback], [Object scope] ):展开当前节点

expandChildNodes( [Boolean deep] ):展开所有子节点

isExpanded():当前节点是否展开

isSelected():当前节点是否被选中

select():选择当前节点

setText( String text ):设置当前的文本

toggle():切换当前节点的展开和收缩状态

unselect():取消对当前节点的选择

getUI():取得节点的UI对象

Ext.tree.AsyncTreeNode

主要配置项:

loader:当前节点的树加载器,默认使用树中配置的树加载器

主要方法:

isLoaded():当前节点是否已经加载数据

reload( Function callback, [Object scope] ):重新加载节点数据,并调用回调函数

Ext.tree.TreeNodeUI

主要方法:

getAnchor():从节点的UI中获取焦点的元素

getIconEl():获取图标的元素

getTextEl():获取文本节点

addClass( String/Array className ):

removeClass( String/Array className ):

hide():

show():

isChecked():取得节点的选择状态,如果当前节点没有复选框则函数返回false

toggleCheck( Boolean (optional) ):设置节点复选框的选择状态

Ext.tree.DefaultSelectionModel

是TreePanel的默认选择模式,该模式一次只能选择树中的一个节点。

主要方法:

clearSelections():清除对树中所有节点的选择

getSelectedNode():取得当前被选中的节点

isSelected( TreeNode node ):节点是否被选中

select( TreeNode node ):选中指定节点

unselect( TreeNode node ):取消指定节点的选中状态

selectNext():选择当前被选节点的下一个节点

selectPrevious():选择当前被选节点的上一个节点

Ext.tree.MultiSelectionModel

是TreePanel的多选择模式,该模式一次可以选择树中的多个节点。

主要方法:

clearSelections():清除所有节点的选中状态

getSelectedNodes():取得被选节点组成的数组

isSelected( TreeNode node ):节点是否被选中

select( TreeNode node, [EventObject e], Boolean keepExisting ):选中指定节点

unselect( TreeNode node ):取消指定节点的选中状态

Ext.tree.TreeLoader

提供了对子节点的延时加载功能,请求指定的URL地址,返回子节点数据,返回的数据格式如下:

[{id: 1,  text: "node1",  leaf: true, check: false      },

{ id: 2, text: "node2",children: [{ id: 3,  text: "node3",  leaf: true}] } ]

[ { id: 1, text: "node1", leaf: true, check: false }, { id: 2, text: "node2", children: [ { id: 3, text: "node3", leaf: true } ] }]

树节点展开时,当前节点的id会作为请求参数被发送到服务器,在服务器可以通过node参数名进行获取。

主要配置项:

dataUrl:获取子节点的URL地址。

baseAttrs:子节点的基本属性对象,该对象中的属性将被添加到树加载器创建的所有子节点上。优先服务器返回的同

名属性值。

baseParams:基本的请求参数,这些参数会被附加到每一个节点的请求中。

clearOnLoad:在加载前是否移除已存在的子节点,默认为true。

preloadChildren:在第一次加载子节点后是否递归加载所有子节点。

requestMethod:请求方法,可选值有POST、GET。

uiProviders:加载器创建子节点的UI实现类。

url:与dataUrl作用相同。

主要方法:

load( Ext.tree.TreeNode node, Function callback, (Object) scope ):从指定的URL加载树节点。

node:需要加载子节点的树节点。

Ext.tree.TreeEditor

主要配置项:

alignment:对齐方式。

editDelay:两次点击节点触发编辑操作的延时时间,默认为350毫秒。

hideEl:在显示编辑器组件时是否隐藏绑定元素。

maxWidth:编辑器的最大宽度,默认为250。

Ext.tree.TreeSorter

主要配置项:

property:用于排序的节点属性名,默认为text。

dir:排序方向,可选值有asc、desc,默认为asc。

caseSensitive:是否区分大小写,默认为false。

folderSort:叶节点是否排在非叶节点之下,默认为false。

leafAttr:叶子节点在folder排序时的值,默认为leaf。

sortType:一个自定义函数用于在排序前转换节点值。

时间: 2024-08-08 13:53:54

关于textjs的tree带复选框的树的相关文章

关于JFace带复选框的树

树的复选框用CheckboxTreeViewer实现.由于其子类ContainerCheckedTreeViewer在没有选择全部子节点时可以自动将父节点设置成灰选,所以实现树的复选框更多的是用ContainerCheckedTreeViewer. TreeView4.java 1 public class TreeViewer4 { 2 public static void main(String[] args) { 3 new TreeViewer4().open(); 4 } 5 6 pu

Java中带复选框的微信牛牛房卡开发的实现和应用

在使用Java Swing开发微信牛牛房卡开发(h5.fanshubbs.com)程序时,很有可能会遇到使用带复选框的微信牛牛房卡开发的需求,但是Java Swing并没有提供这个组件,因此如果你有这个需求,你就得自己动身实现带复选框的树.CheckBoxTree与JTree在两个层面上存在差异:[li]在模型层上,CheckBoxTree的每个结点需要一个成员来保存其是否被选中,但是JTree的结点则不需要.[/li][li]在视图层上,CheckBoxTree的每个结点比JTree的结点多显

带复选框的下拉框

效果图: . css: <style type="text/css"> /* 带复选框的下拉框 */ ul li{ list-style: none; padding:0px; margin: 0px; } .select_checkBox{ border:0px solid red; position: relative; display:inline-block; } .chartQuota{ height:23px; float:left; display:inlin

swing jtree 添加了复选框的树,利用了递归获取选中的果实

原文:swing jtree 添加了复选框的树,利用了递归获取选中的果实 源代码下载地址:http://www.zuidaima.com/share/1553270755478528.htm 矿泉水2013-11-05 16:11:37 swing jtree 添加了复选框的树,利用了递归获取选中的果实

WPF:带复选框CheckBox的树TreeView

最近要用WPF写一个树,同事给了我一个Demo(不知道是从哪里找来的),我基本上就是参照了这个Demo. 先放一下效果图(3棵树): 这个树索要满足的条件是: 父节点.Checked=true时,子节点全部选中(反之成立): 父节点.Checked=false时,子节点全部不选中(反之成立): 子节点存在部分节点选中,部分节点未选中时,父节点为非全选状态(null)(反之成立): 那么这个树究竟要怎么造出来呢? 由于用WPF,且用MVVM模式,故TreeView的ItemSource及复选框的选

C# 读带复选框的excel,写excel并设置字体、边框、背景色

引用:http://www.cnblogs.com/tuyile006/p/3977177.html 这是一篇excel读写功能大汇总,通过C#调用Microsoft.Office.Interop.Excel.dll才能完成任何复杂格式excel的读写操作. 本文需要读取的excel格式如下: 可见表格极不规则,且含有复选框等控件,现在需要将这种表格中的数据提取出来. 要求将提取出来的数据写入到明细表结构的excel中,格式如: 这是我们常见的table表样式,但需要操作excel的字体.背景颜

制作带复选框的ListView控件

实现效果: 知识运用   ListView控件的GridLines //设置是否在ListView控件中显示网格线 public bool GridLines{get;set} 和CheckBoxes属性 //设置listView控件中各数据项是否显示复选框 public bool CheckBoxes{get;set} 以及ListViewItem数据项的Checked属性 //判断是否选中此数据项中的复选框 public bool Checked{get;set} 实现代码: private

JS实现带复选框的下拉菜单

这段时间在做后台的时候需要一个可以复选的下拉菜单,用到的是easyUI中的combo的Demo,先看看官方easyUI:http://www.jeasyui.com/documentation/index.php# ----------------------------------------------------------------------------------------------------------------------------------------------

Tree菜单 复选框选中控制DEMO

java 对应实体类属定义 public class AccoSysmanResource{        /**     * 资源类型     */    private Integer resourceType;        /**     * 权限名称     */    private String name;        /**     * 权限描述     */    private String description;        /**     * 排序     */