8.TreePanel

目录:

1.最简单的树
2.有孙子节点的树
3.事件处理
4.带链接的树
5.动态加载树
6.动态节点和静态节点混用,及树的属性和节点属性设置
7.TreeSelectionModel选择模型
8.可编辑的树
9.按指定属性进行排序
10.替换Tree中图片

一:最简单的树

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //添加子节点
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"子节点1"
   }))
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree",
      width:100,
      height:100,
      root:root  //根节点,
   })

})

 

 

二:有孙子节点的树

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode2",
      text:"孙子节点2"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree",
      width:300,
      height:400,
      root:root
   })

})

 

 

三:事件处理

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //添加子节点
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"子节点1"
   }))
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree",
      width:400,
      height:300,
      root:root
   });
   //事件处理
   treePanel.on("click",function(node,event){//根节点事件
      alert("点击了" + node.text);
   })
   root.on("click",function(node,event){//子节点事件
      alert("点击了" + node.text);
   })
})

 

四:带链接的树

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"网"
   })
   //添加子节点
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"首页",
      href:"#",   //存在连接及打开方式
      hrefTarget:"_blank"
   }))
   //添加子节点
   root.appendChild(new Ext.tree.TreeNode({
      id:"child2",
      text:"论坛首页",
      href:"#",
      hrefTarget:"_blank"
   }))
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree",
      width:400,
      height:300,
      root:root
   });
})

 

五:动态加载树

Ext.onReady(function(){
   var loader=new Ext.tree.TreeLoader({//用于加载子节点数据
      url:"treedata.js"
   });
   var root=new Ext.tree.AsyncTreeNode({
      id:"root",
      text:"根节点",
      loader:loader
   });
   var tree=new Ext.tree.TreePanel({
      renderTo:"TestTree",
      root:root,
      width:400,
      height:400
   });
})

 treedata.js

[
   {
      id:"childnode1",
      text:"子节点1",
      leaf:true  //是否是叶子节点,部位叶节点就要写出其子节点
   },
   {
      id:"childnode2",
      text:"子节点2",
      leaf:true
   },
   {
      id:"childnode3",
      text:"子节点3",
      leaf:true
   }

]

 

 treedata.js

[
   {
      id:"childnode1",
      text:"子节点1",
      leaf:true
   },
   {
      id:"childnode2",
      text:"子节点2",
      leaf:false,//是否是叶子节点,部位叶节点就要写出其子节点
      children:[
          {
             id:"gchildnode1",
             text:"孙子节点1",
             leaf:true
          },
          {
             id:"gchildnode2",
             text:"孙子节点2",
             leaf:true
          }
      ]
   },
   {
      id:"childnode3",
       text:"子节点3",
      leaf:true
   }
]

 

六:动态节点和静态节点混用

Ext.onReady(function(){
   var loader=new Ext.tree.TreeLoader({
      url:"treedata.js"
   });
   var root=new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   });
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"子节点1"
   }))
   root.appendChild(new Ext.tree.AsyncTreeNode({
      id:"child2",
      text:"子节点2",
      loader:loader
   }))
   var tree=new Ext.tree.TreePanel({
      renderTo:"TestTree",
      root:root,
      width:400,
      height:400
   });
})

的一些常用配置属性。

Ext.onReady(function(){
   var loader=new Ext.tree.TreeLoader({
      url:"treedata3.js"
   });
   var root=new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   });
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"子节点1"
   }))
   root.appendChild(new Ext.tree.AsyncTreeNode({
      id:"child2",
      text:"子节点2",
      loader:loader
   }))
   var tree=new Ext.tree.TreePanel({
      renderTo:"TestTree",
      root:root,
      width:400,
      height:400,
      animate:false,//收缩动画
      autoHeight:true, //自动高度
      enableDrag:true, //是否可以拖动
      //enableDD:true, //drap和drop
      enableDrop:true, //放置节点
      lines:false,//节点间虚线
      rootVisible:true,//是否显示根节点
      trackMouseOver:true,//是否显示经过时效果
      useArrows:true//是否使用小箭头
   });

})

 

节点的一些常用配置属性。

Ext.onReady(function(){
   Ext.QuickTips.init();
   var loader=new Ext.tree.TreeLoader({
      url:"treedata3.js"
   });
   var root=new Ext.tree.TreeNode({
      id:"root",
      text:"根节点",
      checked:true,  //true则在text前有个选中的复选框,false则text前有个未选中的复选框,默认没有任何框框
      expanded:true, //是否展开,默认不展开
      qtip:"根节点",  //提示信息
      singleClickExpand:true //单击文本展开默认双击展开
   });
   root.appendChild(new Ext.tree.TreeNode({
      id:"child1",
      text:"子节点1"
   }))
   root.appendChild(new Ext.tree.AsyncTreeNode({
      id:"child2",
      text:"子节点2",
      loader:loader
   }))
   var tree=new Ext.tree.TreePanel({
      renderTo:"TestTree",
      root:root,
      width:400,
      height:400
   });
})

 

 

从JSP中获得数据并构造动态树。

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.AsyncTreeNode({
      id:"root",
      text:"根节点",
      loader:new Ext.tree.TreeLoader({
          url:"AsyncServer2.jsp"
      })
   })
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"AsyncTree",
      width:300,
      height:400,
      root:root
   })

})

 AsyncServer2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%
   String tree = "[{id:'childnode1',text:'子节点',leaf:false}]";
   response.getWriter().write(tree);

%>

 AsyncServer2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%
   StringBuffer tree = new StringBuffer();
   tree.append("[");
   tree.append("{text:'子节点1',id:'son1',leaf:true},");
   tree.append("{text:'子节点2',id:'son2',leaf:true},");
   tree.append("{text:'子节点3',id:'son3',leaf:true}");
   tree.append("]");
   response.getWriter().write(tree.toString());

%>

 

七:TreeSelectionModel选择模型

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode2",
      text:"孙子节点2"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree11",
      width:300,
      height:400,
      root:root,
      bbar:[
          {
             text:"获得选择的节点",
             handler:function(){
                 var sm = treePanel.getSelectionModel();//获取对象,
                 var sn = sm.getSelectedNode();//通过对象获取单个节点
                 if(sn != null) {
                    alert(sn.text);//获取节点内容
                 }else {
                    alert("没有选择任何节点");
                 }
             }
          }
      ]
   })

})

 

 

选择多个节点。

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode2",
      text:"孙子节点2"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree11",
      width:300,
      height:400,
      root:root,
      selModel : new Ext.tree.MultiSelectionModel(),
      bbar:[
          {
             text:"获得选择的节点",
             handler:function(){
                 var sm = treePanel.getSelectionModel();
                 var sn = sm.getSelectedNodes();//获取多个选择节点
                 var length = sn.length;//获取选择节点个数
                 if(length != 0) {
                    alert(length);
                 }else {
                    alert("没有选择任何节点");
                 }
             }
          }
      ]
   })

})

 

八:可编辑的树

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode2",
      text:"孙子节点2"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"hello",
      width:300,
      height:400,
      root:root,
      selModel : new Ext.tree.MultiSelectionModel(),
      bbar:[
          {
             text:"获得选择的节点",
             handler:function(){
                 var sm = treePanel.getSelectionModel();
                 var sn = sm.getSelectedNodes();
                 var length = sn.length;
                 if(length != 0) {
                    alert(length);
                 }else {
                    alert("没有选择任何节点");
                 }
             }
          }
      ]
   })
   new Ext.tree.TreeEditor(treePanel);//可编辑树,将创建数放入即可
})

 

 

九:按指定属性进行排序

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点"
   })
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode4",
      text:"孙子节点2"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"hello",
      width:300,
      height:400,
      root:root,
      selModel : new Ext.tree.MultiSelectionModel(),
      bbar:[
          {
             text:"获得选择的节点",
             handler:function(){
                 var sm = treePanel.getSelectionModel();
                 var sn = sm.getSelectedNodes();
                 var length = sn.length;
                 if(length != 0) {
                    alert(length);
                 }else {
                    alert("没有选择任何节点");
                 }
             }
          }
      ]
   })
   new Ext.tree.TreeEditor(treePanel);
new Ext.tree.TreeSorter(treePanel,
{//排序 property:"id"//根据id属性排序 }) })

 

 

十:替换Tree中图片

Ext.onReady(function(){
   //根节点
   var root = new Ext.tree.TreeNode({
      id:"root",
      text:"根节点",
      icon:"folder.jpg"   //节点图片
   })
   root.on("click",function(){
      root.getUI().getIconEl().src="folder2.jpg"  //当点击时展开时节点图片
   });
   //子节点
   var childNode1 = new Ext.tree.TreeNode({
      id:"chileNode1",
      text:"子节点1",
      icon:"folder.jpg"
   })
   //孙子节点
   var gChildNode1 = new Ext.tree.TreeNode({
      id:"gChildNode1",
      text:"孙子节点1",
      icon:"folder.jpg"
   })
   //孙子节点
   var gChildNode2 = new Ext.tree.TreeNode({
      id:"gChildNode2",
      text:"孙子节点2",
      icon:"folder.jpg"
   })
   //孙子节点
   var gChildNode3 = new Ext.tree.TreeNode({
      id:"gChildNode3",
      text:"孙子节点3",
      icon:"folder.jpg"
   })
   childNode1.appendChild(gChildNode1);
   childNode1.appendChild(gChildNode2);
   childNode1.appendChild(gChildNode3);
   //子节点
   var childNode2 = new Ext.tree.TreeNode({
      id:"chileNode3",
      text:"子节点2"
   })
   //子节点
   var childNode3 = new Ext.tree.TreeNode({
      id:"chileNode2",
      text:"子节点3"
   })
   root.appendChild(childNode1);
   root.appendChild(childNode2);
   root.appendChild(childNode3);
   var treePanel = new Ext.tree.TreePanel({
      renderTo:"TestTree11",
      width:300,
      height:400,
      root:root,
      selModel : new Ext.tree.MultiSelectionModel(),
      bbar:[
          {
             text:"获得选择的节点",
             handler:function(){
                 var sm = treePanel.getSelectionModel();
                 var sn = sm.getSelectedNodes();
                 var length = sn.length;
                 if(length != 0) {
                    alert(length);
                 }else {
                    alert("没有选择任何节点");
                 }
             }
          }
      ]
   });
   new Ext.tree.TreeSorter(treePanel,{
      property:"id"
   })

})

 

posted @ 2015-08-06 21:11  W&L  阅读(180)  评论(0编辑  收藏  举报