谁研究过ext 的 columntree ?我在用的时候只能一次性的把dataurl指向一个json文件,从里面加载节点,有没有方法可以动态加载?网上找了很多代码,基本上都是这样的:
var colTree = new Ext.tree.ColumnTree({
width:552,
autoHeight:true,
rootVisible:false,
autoScroll:true, columns:[{
header:'年份',
width:100,
dataIndex:'y_ear'
},{
header:'部门',
width:200,
dataIndex:'branch'
},{
header:'姓名',
width:100,
dataIndex:'name'
},{
header:'人次',
width:100,
dataIndex:'persons'
},{
header:'卷次',
width:100,
dataIndex:'volTimes'
},{
header:'档案号或文号',
width:100,
dataIndex:'docNumber'
},{
header:'档案名称',
width:100,
dataIndex:'docName'
}], loader: new Ext.tree.TreeLoader({
dataUrl :'borrowStatAction.do?RequestPram=SEARCH_CHILD_BRANCH',
baseParams:{lv:1},
uiProviders:{
'col': Ext.tree.ColumnNodeUI
}
})
}) function gettree(node){
var par = node.id;
Ext.Ajax.request({
url: 'borrowStatAction.do?RequestPram=SEARCH_CHILD_BRANCH',
params: {lv:1},
method: 'GET',
success: function(result,request){ //成功返回
var myData = Ext.decode(result.responseText); // 得到服务器返回的json串,并用json.js解析过对象数组
for(var i=0;i<myData.root.length;i++ ){
var cnode=new Ext.tree.AsyncTreeNode({
'y_ear':myData.root[i].y_ear,//显示内容为服务器返回id 父节点id
'branch':myData.root[i].branch,
'name':myData.root[i].name,
'persons':myData.root[i].persons,
'volTimes':myData.root[i].volTimes,
'docNumber':myData.root[i].docNumber,
'docName':myData.root[i].docName,
'text':myData.root[i].y_ear,
'uiProviders':{ 'col': Ext.tree.ColumnNodeUI },
'leaf':myData.root[i].leaf,//是否为叶子节点,根据服务器返回内容决定是否为叶子节点
'iconCls':'task-folder',
'children':[{//添加子节点,如果服务器返回tl[i].leaf为ture则孩子节点将无法显示
'text':'loading',
'iconCls': 'loading',
'leaf':true
}]
});
cnode.on('expand',gettree);//定义当前节点展开时调用gettree方法,再次异步读取子节点
node.appendChild(cnode);//将当前节点添加为待展开节点子节点
}
//node.firstChild.remove();//删除当前节点第一个孩子节点(loading节点)
}
//failure: function2 // 失败
});
}
用这种方法添加节点的时候,只认 text 属性,其他的属性无效
var colTree = new Ext.tree.ColumnTree({
width:552,
autoHeight:true,
rootVisible:false,
autoScroll:true, columns:[{
header:'年份',
width:100,
dataIndex:'y_ear'
},{
header:'部门',
width:200,
dataIndex:'branch'
},{
header:'姓名',
width:100,
dataIndex:'name'
},{
header:'人次',
width:100,
dataIndex:'persons'
},{
header:'卷次',
width:100,
dataIndex:'volTimes'
},{
header:'档案号或文号',
width:100,
dataIndex:'docNumber'
},{
header:'档案名称',
width:100,
dataIndex:'docName'
}], loader: new Ext.tree.TreeLoader({
dataUrl :'borrowStatAction.do?RequestPram=SEARCH_CHILD_BRANCH',
baseParams:{lv:1},
uiProviders:{
'col': Ext.tree.ColumnNodeUI
}
})
}) function gettree(node){
var par = node.id;
Ext.Ajax.request({
url: 'borrowStatAction.do?RequestPram=SEARCH_CHILD_BRANCH',
params: {lv:1},
method: 'GET',
success: function(result,request){ //成功返回
var myData = Ext.decode(result.responseText); // 得到服务器返回的json串,并用json.js解析过对象数组
for(var i=0;i<myData.root.length;i++ ){
var cnode=new Ext.tree.AsyncTreeNode({
'y_ear':myData.root[i].y_ear,//显示内容为服务器返回id 父节点id
'branch':myData.root[i].branch,
'name':myData.root[i].name,
'persons':myData.root[i].persons,
'volTimes':myData.root[i].volTimes,
'docNumber':myData.root[i].docNumber,
'docName':myData.root[i].docName,
'text':myData.root[i].y_ear,
'uiProviders':{ 'col': Ext.tree.ColumnNodeUI },
'leaf':myData.root[i].leaf,//是否为叶子节点,根据服务器返回内容决定是否为叶子节点
'iconCls':'task-folder',
'children':[{//添加子节点,如果服务器返回tl[i].leaf为ture则孩子节点将无法显示
'text':'loading',
'iconCls': 'loading',
'leaf':true
}]
});
cnode.on('expand',gettree);//定义当前节点展开时调用gettree方法,再次异步读取子节点
node.appendChild(cnode);//将当前节点添加为待展开节点子节点
}
//node.firstChild.remove();//删除当前节点第一个孩子节点(loading节点)
}
//failure: function2 // 失败
});
}
用这种方法添加节点的时候,只认 text 属性,其他的属性无效
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货