ExtJS06:树型Tree相关操作

本文介绍了如何使用ExtJS创建树形面板(TreePanel),包括刷新、展开、收起功能。详细展示了树节点的加载、单击事件监听,以及后端如何构建树形数据。单击事件触发时,根据选中节点更新相关表格的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值