8、树TreePanel及菜单Menu组件应用
2016-09-17 22:59
274 查看
快速编写demo
创建tree.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <!-- 第一步引入Ext的样式文件 --> <link type="text/css" rel="stylesheet" href="ext-3.4.1/resources/css/ext-all.css"></link> <!-- 引入Ext库文件,底层驱动 --> <script src="ext-3.4.1/adapter/ext/ext-base.js"></script> <!-- 引入ext-all --> <script src="ext-3.4.1/ext-all.js"></script> <script src="tree.js"></script> </head> <body> </body> </html>
创建tree.js
// 创建一个简单的树 function simpleTree() { // 树节点 var vroot = new Ext.tree.TreeNode({ text : "树根" }); vroot.appendChild(new Ext.tree.TreeNode({ text : "子节点" })); // 树面板,第一棵树有一个根节点 var panel = new Ext.tree.TreePanel({ title : "树的示例", width : 300, height : 300, root : vroot }); panel.render(document.body); } // 从后台加载树节点,要使用树和加载顺treeLoader function simpleTreeLoader() { // 树节点 var vroot = new Ext.tree.AsyncTreeNode({ text : "树根" }); var vloader = new Ext.tree.TreeLoader({ url : "treeDatas.js" }); /* * vroot.appendChild(new Ext.tree.TreeNode({ text : "子节点" })); */ // 树面板,第一棵树有一个根节点 var panel = new Ext.tree.TreePanel({ title : "树的示例", width : 300, height : 300, loader : vloader, root : vroot }); panel.render(document.body); } // 从后台动态加载子节点 function jspTreeLoader() { // 树节点 var vroot = new Ext.tree.AsyncTreeNode({ id : "root", text : "树根", leaf : false }); var vloader = new Ext.tree.TreeLoader({ url : "tree.jsp", baseParams : {} }); vloader.on("beforeload", function(loader, node) { loader.baseParams.parent = (node.id == "root" ? "" : node.text); }); /* * vroot.appendChild(new Ext.tree.TreeNode({ text : "子节点" })); */ // 树面板,第一棵树有一个根节点 var panel = new Ext.tree.TreePanel({ title : "树的示例", width : 300, height : 300, enableDD : true, tbar : [{ text : "布局", menu : { items : [{ text : "菜单1", menu:{items:[{text:"子菜单"},{text:"子菜单2s"}]} }, { text : "菜单2" }, "-", { text : "菜单3" }] } }, "->", { text : "查询" }, "请输入姓名", new Ext.form.TextField()], loader : vloader, root : vroot }); panel.render(document.body); } //菜单 function menuTreeLoader() { // 树节点 var vroot = new Ext.tree.AsyncTreeNode({ id : "root", text : "树根", leaf : false }); var vloader = new Ext.tree.TreeLoader({ url : "tree.jsp", baseParams : {} }); vloader.on("beforeload", function(loader, node) { loader.baseParams.parent = (node.id == "root" ? "" : node.text); }); var menu=new Ext.menu.Menu({ items:[{ text:"新建部门", handler:function(){ Ext.Msg.prompt("提示","请输入部门名称:"); } },{ text:"删除部门" }] }); /* * vroot.appendChild(new Ext.tree.TreeNode({ text : "子节点" })); */ // 树面板,第一棵树有一个根节点 var panel = new Ext.tree.TreePanel({ title : "树的示例", width : 300, height : 300, enableDD : true, tbar : [{ text : "布局", menu : { items : [{ text : "菜单1", menu:{items:[{text:"子菜单"},{text:"子菜单2s"}]} }, { text : "菜单2" }, "-", { text : "菜单3" }] } }, "->", { text : "查询" }, "请输入姓名", new Ext.form.TextField()], loader : vloader, root : vroot }); panel.on("contextmenu",function(node,e){ menu.showAt(e.getXY()); }); panel.render(document.body); } Ext.onReady(function() { menuTreeLoader(); });
创建treeDatas.js
[{text:"子节点1"},{text:"子节点2",leaf:true,checked:false}]
创建tree.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String parent=request.getParameter("parent"); if(parent==null||"".equals(parent)) { out.println("[{text:\"北京\"},{text:\"四川\"}]"); } else if("北京".equals(parent)) { out.println("[{text:\"海定\"},{text:\"昌平\",leaf:true}]"); } else if("四川".equals(parent)) { out.println("[{text:\"成都\"},{text:\"绵阳\",leaf:true}]"); } %>
注意:tree.jsp页面一定要删除、多余的东西,要不然加载不了jsp页面
执行效果如下:
simpleTree
simpleTreeLoader
jspTreeLoader
menuTreeLoader
知识点解析
appendChild( Node/Array node ) : Node
在该节点里面最后的位置上插入节点,可以多个。参数项:
node : Node/Array 要加入的节点或节点数组。
返回值:
Node 如果是单个节点,加入后返回true,如果是数组返回null。
root: Ext
树的根节点对象url : String
进行请求的URL。URL处返回节点对象的序列,表示要加载的子节点。id: String
节点ID。leaf:Boolean
leaf为true时表示为叶子节点,为false是根节点baseParams : Object
(可选的)一个分别对每个节点进行参数传递的集合对象。enableDD:Boolean
enableDD:true//不仅可以拖动,还可以通过Drag改变节点的层次结构(drap和drop)showAt( Array xyPosition , Ext.menu.Menu parentMenu ) : void
在指定的位置显示该菜单参数项:
xyPosition : Array 显示菜单时所用的包含 X 和 Y [x, y] 的坐标值(坐标是基于页面的)
parentMenu : Ext.menu.Menu (可选) 该菜单的父级菜单,如果有的话(默认为 undefined)
相关文章推荐
- 27,树TreePanel及菜单Menu组件应用
- Ext.tree.TreePanel,accordion布局基于SSH+JSON的系统级应用之菜单设计
- MenuPilot - 非常棒的开源任务菜单组件 For ASP.Net 2.0
- 层序遍历在ExtJs的TreePanel中的应用
- (总结)Swing组件的使用---下拉式菜单(menu),弹出式菜单(JPopupMenu),选项卡窗体(JTabbedPane)
- GUI的常用组件 之笑傲菜单组件 Menu
- Android应用资源---菜单资源类型(Menu)
- CSS TreeMenu 二级树形菜单
- Menu组件显示二级菜单时seperate间距太大问题。
- 【转载】Coolite之TreePanel右键功能菜单
- Coolite TreePanel开发实例 包括功能(右击菜单,筛选菜单,拖动菜单)
- 层序遍历在ExtJs的TreePanel中的应用
- 关于树面板TreePanel的简单应用
- Ext 介绍入门之 Menu Widget (EXT 菜单组件)
- Flex左键单击弹出菜单--使用menu组件详解
- TreePanel的创建与应用(1)
- 层序遍历在ExtJs的TreePanel中的应用
- Ext_菜单组件_Ext.menu.Menu
- 【ext.net 1.0】GridPanel 的插件 GridFilter 过滤组件,ListFilter过滤菜单不自动滚动的问题解决
- Android应用资源---菜单资源类型(Menu)