1.树形代码如下:
this.treepanel = new Ext.tree.TreePanel({
title : '指标参数分类',
region : 'west',
collapsible : true,
autoScroll : true,
split : true,
height : 800,
width : 180,
id : 'Unim_AssTarPar_Tree_Id',
tbar : new Ext.Toolbar({
items : [{
xtype : 'button',
iconCls : 'btn-refresh',
text : '刷新',
handler : function() {
var tree = Ext.getCmp('Unim_AssTarPar_Tree_Id');
tree.body.mask(__maskLoading, 'x-mask-loading');
tree.root.reload();
tree.root.collapse(true, false);
tree.root.expand(false, false, function() {
tree.body.unmask();// 全部展开之后让蒙版消失
});
}
}, {
xtype : 'button',
text : '展开',
iconCls : 'btn-expand',
handler : function() {
var tree = Ext.getCmp('Unim_AssTarPar_Tree_Id');
tree.expandAll();
}
}, {
xtype : 'button',
text : '收起',
iconCls : 'btn-collapse',
handler : function() {
var tree = Ext.getCmp('Unim_AssTarPar_Tree_Id');
tree.collapseAll();
}
}]
}),
autoScroll : true,
animate : true,
// checkModel : 'multiple',
containerScroll : true,
lines : true,// 节点之间连接的横竖线
rootVisible : false,// 是否显示根节点
collapsible : true,
split : true,
// cascadeCheck : 'all',
border : false,
frame : false,
loader :
new Ext.tree.TreeLoader({
url : __ctxPath + '/unim/listTreeUnimAssTarPar.do'
}),
root :
new Ext.tree.AsyncTreeNode({
}),
listeners : {
scope:this,
'click' : this.clickNode
//监听单击事件
}
});
2.单击事件代码如下:
clickNode:function(node) {
var users = Ext.getCmp('AssetCanShuViewGrid');
//左侧表格
var store = users.getStore();
//获取store对象
store.url = __ctxPath + "/unim/listUnimAssTarPar.do";
//指定url
var nodeId = node.id;
store.baseParams = {
//给store指定基本参数
'treeParam' : nodeId
};
store.reload({
//重新加载表格,并传递分页参数
params : {
start : 0,
limit : store.baseParams.limit
}
});
},
3.后台代码,拼接树形所需要的串
public String listTree() {
QueryFilter filter=new QueryFilter(getRequest());
// filter.addSorted("orderno", QueryFilter.ORDER_ASC);
List<UnimAssets> list= unimAssetsService.getAll(filter);//获得数据集
StringBuilder sb = new StringBuilder();
sb.append("[{id:'0',text:'指标参数分类树',expanded:true,children:[");
//指定根节点
int iCount = list.size();
for(int i=0;i<iCount;i++) {
sb.append("{id:'asId"+list.get(i).getAssetsId()+"',text:'"+list.get(i).getAssetsName()+"',"+findChild(list.get(i).getAssetsId()));
if(i<iCount-1) {
sb.append(",");
}
}
sb.append("]}]");
//指定根节点
jsonString=sb.toString();
System.out.println(jsonString);
return SUCCESS;
}
/*
* 寻找子根节点
*/
public String findChild(Long assetsId) {
StringBuffer buff1 = new StringBuffer("");
List<UnimAssetsTarget> list = unimAssetsTargetService.findByParentId(assetsId);
if (list.size() == 0) {
buff1.append("leaf:true}");
return buff1.toString();
} else {
buff1.append("children:[");
for (UnimAssetsTarget target : list) {
buff1.append("{id:'trId" + target.getTargetId() + "',text:'" + target.getTargetName() + "',");
buff1.append("leaf:true},");
// buff1.append(findChild(target.getTargetId()));
//如果树形超过两级,则递归
}
buff1.deleteCharAt(buff1.length() - 1);
buff1.append("]}");
return buff1.toString();
}
}