动态获取Ext的树形结构
当下拉列表选择不同的选项的时候 加载不同的树形结构
下拉列表onselect事件的方法为
function taskchange()
{
var url;
taskid = cbotask.getValue();
for(var i=0;i<treedata.length;i++)
{
if(treedata.taskid==taskid)
{
taskroot.setText(treedata.name);
url = 'back/Taskaction_getfmdata.action?taskid='+taskid+'&dwdm='+treedata.dwdm;
}
}
taskloader.url = url;
taskroot.reload();
}
树形结构的实现方式为
var taskid = '';
var taskroot = new Ext.tree.AsyncTreeNode({
text:'具体任务'
});
//加载数数据集 这个地方我不知如何写 因为我把它的url写在了 下拉列表的onselect的事件里了
var taskloader = new Ext.tree.TreeLoader({
url:''
});
//树形结构的实现
var tasktree = new Ext.tree.TreePanel({
loader:taskloader,
root:taskroot,
borderalse,
rootVisible:true,
renderTo:'tasktree'
});
不知为什么我的taskloader请求的url都是一个 http://127.0.0.1081/apollo/back/Taskaction_getfmdata.action?taskid=zcjb&dwdm=100000000
所以说我的数据都是从根部数据开始加载 1 楼 peter2009 2009-09-22 var taskid = '';
var taskroot = new Ext.tree.AsyncTreeNode({
text:'具体任务',
dwdm:'',
taskid:''
});
var taskloader = new Ext.tree.TreeLoader({
url:'back/Taskaction_getfmdata.action'
});
taskloader.on('beforeload', function(treeloader, node) {
treeloader.baseParams = {
taskid:taskid,
dwdm:node.attributes.dwdm
};
}, this);
var tasktree = new Ext.tree.TreePanel({
loader:taskloader,
root:taskroot,
border:false,
rootVisible:true,
renderTo:'tasktree'
});
//获取单位的根节点从服务器上获取一个json数组
var treedata = ${unitinfos};
//侦听cbotask的onchange方法 注下拉列表是cbotask
cbotask.on('select',taskchange);
//taskchange方法 替换单位的方法
function taskchange()
{
var url;
taskid = cbotask.getValue();
for(var i=0;i<treedata.length;i++)
{
if(treedata[i].taskid==taskid)
{
taskroot.setText(treedata[i].name);
taskroot.attributes.dwdm = treedata[i].dwdm;
taskroot.attributes.taskid = taskid;
}
}
taskroot.reload();
}
问题解决了 只要改变 root的属性就行 原来生活如此简单呀 !!!