1、范例主要展示以下功能点:
树节点通过请求服务器URL地址获得
请求附加自定义参数值
重新加载树节点的子节点
节点附件自定义属性值
2、范例源码
Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = "../widgets/ext-3.0/resources/images/default/s.gif"; Ext.QuickTips.init(); var tree = new Ext.tree.TreePanel({ title: "异步加载树节点", renderTo: Ext.getBody(), width: 300, height: 300, useArrows: true, rootVisible: false, /* root: new Ext.tree.AsyncTreeNode({ id: "root", text: "根节点", expanded: true }), */ root: { nodeType: "async", id: "root", text: "根节点", expanded: true }, tbar: [ { text: "重新加载", handler: function(){ var loader = tree.getLoader(); var node = tree.getNodeById("1_2"); loader.load(node); //重新加载树节点的子节点 node.expand(); //展开树节点 } } ], loader: new Ext.tree.TreeLoader({ dataUrl: "../tree-loader.action", baseAttrs: { username: "cjm" }, baseParams: { password: "cjm" }, listeners: { "beforeload": function(loader, node){ loader.baseParams.nodeText = node.text; //将节点属性值作为请求参数值发送 } } }), listeners: { "click": function(node, event){ //alert(node.attributes.username); //获取附加的属性值 } } }); //节点编辑 new Ext.tree.TreeEditor(tree); //节点排序 new Ext.tree.TreeSorter(tree, { folderSort: true, property: "id", dir: "asc" }); });
3、后台获取参数值(struts2)
//获取节点的id值
String nodeId = ServletActionContext.getRequest().getParameter("node");
//获取附加的参数值
String password = ServletActionContext.getRequest().getParameter("password");
String nodeText = ServletActionContext.getRequest().getParameter("nodeText");
4、子节点数据
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String id = request.getParameter("node");
%>
<% if("root".equals(id)){ %>
[
{id:"1", text:"node1", leaf:false},
{id:"2", text:"node2", leaf:true}
]
<% } %>
<% if("1".equals(id)){ %>
[
{id:"1_1", text:"node1_1", leaf:true},
{id:"1_2", text:"node1_2", children: [
{id:"1_2_1", text:"node1_2_1", leaf:true}
]}
]
<% } %>