一般来说可以这样重新载入
Ext.getCmp("roleManageTree").root.reload();
而如何调用,你可以参考这个
两种方式
一是reload
tools:[{
id:'refresh',
on:{
click:function(){
tree_refresh();//调用刷新的函数
}
}
}],
function tree_refresh(){
var tree = Ext.getCmp('phonetree');
tree.body.mask('loading...','x-mask-loading');
tree.root.reload();
tree.root.collapse(true,true);
setTimeout(function(){
tree.body.unmask();
tree.root.expand(true,true);
},1000);
alert("ok");
};
二是重新加载
tools:[{
id:'refresh',
on:{
click:function(){
tree_refresh();//调用刷新的函数
}
}
}],
function tree_refresh(){
var tree = Ext.getCmp('phonetree');
var loader = new Ext.tree.TreeLoader({dataUrl:'phoneService.jsp'});
loader.load(tree.root);
};
把树单独放在一个iframe里, 加个按钮刷新这个frame, 这是最简单的方法, 在jQuery, Ext这些东西出来之前都是这么干的
或者从后台取所有节点数据, 手动删除所有节点, 然后写递归方法根据数据添加所有节点. 这个是效率最高的做法, 只和后台通讯一次
也就10几行代码, 你自己写吧
//通过刷新树的store来刷新树,即tree.getStore().load();
//下面是代码
Ext.onReady(function(){
var store = Ext.create('Ext.data.TreeStore', {
proxy: {
type: 'ajax',
url: 'your url',
//通过后台取数据,返回数据的格式是:
//{"list":[{"text":"node0","leaf":true},{"text":"node1","leaf":true}]}
reader: {
type: 'json',
root: 'list'
}
}
});
var tree = Ext.create('Ext.tree.Panel', {
tbar: [{
text: '点击刷新树',
handler: function(){
//刷新store即刷新树
tree.getStore().load();
}
}],
title: 'Simple Tree',
width: 400,
height: 300,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});
});