再动态加载数之前,我们先了解一下如何创建树.和用到的一些相关的组件和对象在Extjs中.创建树面板都是用的Ext.tree.TreePanel这个组件, 然后创建节点都是用的这个对象:Ext.tree.TreeNode, 看一下动态创建树的简单代码:
Ext.onReady(function() { var tree31 = new Ext.tree.TreePanel({ el: "tree3", autoScroll: true, animate: true, height: 200, enableDD: true, containerScroll: true }); //建立根 var root111 = new Ext.tree.TreeNode({ text: '根', draggable: false, id: 'root' }); //设置根 tree31.setRootNode(root111); tree31.render(); root111.appendChild(new Ext.tree.TreeNode({ id: 'a1', text: '节点1' })); var a2 = new Ext.tree.TreeNode({ id: 'a2', text: '节点2' }); root111.appendChild(a2); tree31.expandAll(); });
很简单吧...我们再看看动态载的树是怎么回事... 动态加载树主要是Ext.tree.TreeLoader这个对象话不多说了,直接就贴代码了...
var tree2 = new Ext.tree.TreePanel({ el: 'tree2', //目标div容器 autoScroll: true, animate: true, enableDD: true, height: 350, containerScroll: true, loader: new Ext.tree.TreeLoader({ dataUrl: '请求的页面' , method: 'GET' }), listeners: { "click": function(node, event) { //叶子节点点击不进入链接 if (node.isLeaf()) { // 显示叶子节点菜单 event.stopEvent(); ALLEvents(node); } else { //不是叶子节点不触发事件 event.stopEvent(); //点击时展开 node.toggle(); } } } }); var root42 = new Ext.tree.AsyncTreeNode({ text: '操作中心', draggable: false, id: 'D42'//默认的node值 }); tree2.setRootNode(root42); tree2.render(); tree2.expandAll();
请求页面返回的格式如下:
[{id:'c2',text:'权限管 理',icon:'Images/icons/sysmanagemenu.png',leaf:false,children:[ {id:'c21',text:'人员资料管 理',icon:'Images/icons/setuseridicon.png',leaf:true}, {id:'c22',text:'权限设 置',icon:'Images/icons/setuseridicon.png',leaf:true}] },{ id:'c5',text:'系统设 置',icon:'Images/icons/sysmanagemenu.png',leaf:false,children:[{id:'c51',text:'数据备 份',icon:'Images/icons/setuseridicon.png',leaf:true},{id:'c52',text:'数据还 原',icon:'Images/icons/setuseridicon.png',leaf:true}] }]
这样就可以了.后台看你自己用什么语言写都可以,,,只要是输出这种json格式就行..