我现在遇到的问题是,目前的js只能实现两级tree代码见下/*
* Ext JS Library 2.2.1
* Copyright(c) 2006-2009, Ext JS, LLC.
* [email protected]
*
* http://extjs.com/license
*/
var getTreeNode = function(node)
{
Ext.Ajax.request({
url : 'extjstree.do',
method:'post',
success: function (result,request) {
var depts = Ext.decode(result.responseText);
for(var i=0;i<depts.length;i++)
{
nd = new Ext.tree.AsyncTreeNode({
id:depts[i].weekly,
text:depts[i].weekly,
leaf:depts[i].leaf,//是否为叶子节点,根据服务器返回内容决定是否为叶子节点
iconCls:depts[i].iconCls
// uiProvider:depts[i].uiProvider
});
// nd.on('expand',getTreeNode);
node.appendChild(nd);
}
}
})
}
//异步加载根节点
var root=new Ext.tree.AsyncTreeNode({
id:'1',
text:'Tasks'
});
//加载树
var tree = new Ext.tree.ColumnTree({
el:'tree-ct',
width: 820,
height: 400,
rootVisible:false,
animate:true,
autoScroll:true,
title: '个人周报',
// renderTo: Ext.getBody(),
columns:[{
header:'周 期',
width:200,
dataIndex:'weekly'
},{
header:'周报作者',
width:100,
dataIndex:'user'
},{
header:'起、止时间',
width:350,
dataIndex:'time'
},{
header:'提交日期',
width:150,
dataIndex:'commitTime'
}], loader: new Ext.tree.TreeLoader({
uiProviders:{
'col': Ext.tree.ColumnNodeUI
}
})
});
Ext.onReady(function(){
//设置根节点
tree.setRootNode(root); tree.on('beforeload',
function(node){
// alert(node.id);
tree.loader.dataUrl='extjstree.do?weekly='+node.id; //定义子节点的Loader
});
tree.render();
// for(var i in tree.loader){
//
// alert("属性名称:"+i+",属性值:"+tree.loader[i]);
// } root.on('expand',getTreeNode);});现在我想完成多级tree怎么做?我疑惑在他的传的url怎么能动态的分配?或者动态传递节点id给js,然后通过js在条用url传递id,在通过id进行下个节点的查询?
* Ext JS Library 2.2.1
* Copyright(c) 2006-2009, Ext JS, LLC.
* [email protected]
*
* http://extjs.com/license
*/
var getTreeNode = function(node)
{
Ext.Ajax.request({
url : 'extjstree.do',
method:'post',
success: function (result,request) {
var depts = Ext.decode(result.responseText);
for(var i=0;i<depts.length;i++)
{
nd = new Ext.tree.AsyncTreeNode({
id:depts[i].weekly,
text:depts[i].weekly,
leaf:depts[i].leaf,//是否为叶子节点,根据服务器返回内容决定是否为叶子节点
iconCls:depts[i].iconCls
// uiProvider:depts[i].uiProvider
});
// nd.on('expand',getTreeNode);
node.appendChild(nd);
}
}
})
}
//异步加载根节点
var root=new Ext.tree.AsyncTreeNode({
id:'1',
text:'Tasks'
});
//加载树
var tree = new Ext.tree.ColumnTree({
el:'tree-ct',
width: 820,
height: 400,
rootVisible:false,
animate:true,
autoScroll:true,
title: '个人周报',
// renderTo: Ext.getBody(),
columns:[{
header:'周 期',
width:200,
dataIndex:'weekly'
},{
header:'周报作者',
width:100,
dataIndex:'user'
},{
header:'起、止时间',
width:350,
dataIndex:'time'
},{
header:'提交日期',
width:150,
dataIndex:'commitTime'
}], loader: new Ext.tree.TreeLoader({
uiProviders:{
'col': Ext.tree.ColumnNodeUI
}
})
});
Ext.onReady(function(){
//设置根节点
tree.setRootNode(root); tree.on('beforeload',
function(node){
// alert(node.id);
tree.loader.dataUrl='extjstree.do?weekly='+node.id; //定义子节点的Loader
});
tree.render();
// for(var i in tree.loader){
//
// alert("属性名称:"+i+",属性值:"+tree.loader[i]);
// } root.on('expand',getTreeNode);});现在我想完成多级tree怎么做?我疑惑在他的传的url怎么能动态的分配?或者动态传递节点id给js,然后通过js在条用url传递id,在通过id进行下个节点的查询?
loader: new Ext.tree.TreeLoader({
dataUrl : 'ajax/treeNode.jsp',
listeners : {
beforeload : function(sel,node){
sel.baseParams.p_id = node.id;
}
},
baseParams : {
p_id : '0'
}
})这是普通的树动态加载
每次展开指定节点的时候,都把节点id传给后台,重新获取子目录
所以你每次取文件夹的时候,只需要取这个节点的子目录就行了,不需要全部取完