读书人

Ext树状结构显示示例代码

发布时间: 2012-10-13 11:38:17 作者: rapoo

Ext树状结构展示示例代码

以下为项目应用中的一些示例代码,供以后应用参考。

?

一.普通树状结构展示

?

1.前台JS代码

ccs.consultation.deptTreePanel = Ext.extend(Ext.Panel, {title:'组织结构',layout : 'fit',id:'deptTreePanel',height : 312,   border:false,initComponent : function() {// 组织树  var loader = new Ext.tree.DWRTreeLoader({            dataUrl: biDeptService.getDeptByUpDeptCode     });     loader.on('beforeload',function(treeLoader,node){        treeLoader.baseParams.id = node.attributes.id;     },this);      var root =new  Ext.tree.AsyncTreeNode({    id:sessionObj.firstDeptCode,    text:sessionObj.firstDeptName,    href:'',hrefTarget:'_blank' });var tree = new Ext.tree.TreePanel({        autoScroll: true,        border:false,        animate: false,        enableDD: false,        containerScroll: true,        root:root,    loader:loader,    id:'deptTreePanelTree'});tree.addListener('click',function(node,e){    var deptCode = node.attributes.id;    //查询人员        var params = {};    params.deptCode = deptCode;    var store = Ext.getCmp('csPersonViewGrid').getStore();    store.baseParams = {};//清空参数    Ext.apply(store.baseParams,params);         store.load();});this.items = [tree];this.tbar = [{text : '展开',handler : function() {tree.expandAll();}}, {text : '合拢',handler : function() {tree.collapseAll();}}];ccs.consultation.deptTreePanel.superclass.initComponent.call(this);}})

?2.后台Java代码

public List getDeptByUpDeptCode(String id) {String upDeptCode = id;List list = biDeptDao.getDeptByUpDeptCode(upDeptCode);List treeList = new ArrayList();for (int i = 0; i < list.size(); i++) {BiDept biDept = (BiDept)list.get(i);TreeNode node = new TreeNode();node.setId(biDept.getDeptCode());node.setText(biDept.getDeptName());node.setLeaf(false);treeList.add(node);}return treeList;}

?TreeNode是自己定义的java类,含id,text,leaf等相关属性。

?

二.带选择框的树形结构展示

?

1.带选择框树结构展示代码

Ext.onReady(function(){    var Tree = Ext.tree;        var tree = new Tree.TreePanel({        el:'tree-div',        useArrows:true,        autoScroll:true,        animate:true,        enableDD:true,        containerScroll: true,         loader: new Tree.TreeLoader({            dataUrl:'0005_checkbox_reorder_tree.php'        })    });// 选中父节点的checkbox后,自动选中子节点tree.on('checkchange', function(node, checked) {   node.expand();   node.attributes.checked = checked;   node.eachChild(function(child) {   child.ui.toggleCheck(checked);   child.attributes.checked = checked;   child.fireEvent('checkchange', child, checked);   });   }, tree);      // set the root node    var root = new Tree.AsyncTreeNode({        text: 'Ext JS',        draggable:false,        id:'source'    });    tree.setRootNode(root);    // render the tree    tree.render();    root.expand();});

?2.显示选中的岗位

buttons : [{text : '显示选中的岗位',handler : function() {var msg = '', selNodes = tree.getChecked();Ext.each(selNodes, function(node) {if (msg.length > 0) {msg += ', ';}msg += node.text;});Ext.Msg.show({title : '选中岗位:',msg : msg.length > 0 ? msg : '无',icon : Ext.Msg.INFO,minWidth : 200,buttons : Ext.Msg.OK});}}]});

?

要在树上展现checkbox,只需要在返回来的json数据中加上 checked 项(为true/false)。


返回的json数据如下:

[{"cls":"folder","id":10,"leaf":false,checked:false,"children":[{"cls":"file","id":11,"leaf":true,checked:false,"children":null,"text":"S600"},            {"cls":"file","id":12,"leaf":true,checked:false,"children":null,"text":"SLK200"}], "text":"Benz"}]

?

读书人网 >Web前端

热点推荐