Extjs 复选问题

var areaProvinceTree = new Ext.tree.TreePanel({
id : 'areaProvincetree',
width : (mywidth - 200) * 1 / 4 - 2,
height : myheight * 1 / 2,
title : '地域范围',
autoScroll : true,
containerScroll : true,
root : new Ext.tree.AsyncTreeNode({
text : '地域范围',
draggable : false,
isAncestor : true,
checked : false,
id : '-1'
}),
loader : new Ext.tree.TreeLoader({
dataUrl : 'showAreaProvinceTree.action',//返回所有数据
baseParams : {
type : ''
}
})
});
areaProvinceTree.on('checkchange', function(node, checked) {
node.expand();
node.attributes.checked = checked;
node.eachChild(function(child) {
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
}, areaProvinceTree);
areaProvinceTree.on('load', function() {
//tempMsg.areaProvince为dwr返回的放有节点数据的数组
if (tempMsg != null && tempMsg.areaProvince.length > 0) {
for (var i = 0; i < tempMsg.areaProvince.length; i++) {
areaProvinceTree.getNodeById(tempMsg.areaProvince[i].statisticsObjectId).attributes.checked = true;
}
tempMsg.areaProvince = [];
}
});

问题是rootNode.expand();只展开一层,如果我自己写全部展开的话。没展开的节点还是找不到的。
全部展开后的事件,好像又没有吧!?怎么办啊?

[b]问题补充:[/b]
tree的json数据会根据其他控件选择情况返回不同的数据。
grid的行点击事件又会根据dwr返回的数据,将所有返回的节点进行选择。如果在后台直接将json数据封装好的话。后台会特别复杂的。
dwr返回的数据就是节点的id。选择树中id为该数据的节点(也就是打勾)。

说白了,就是需要一个在前台进行树节点选择。
但是要在树数据加载完后,并且全部展开后才进行树节点选择。异步的问题。!!

试着:
监听treeloader的load事件,每载入一次,就去执行一次选择操作.
然后你treepanel.expandAll();

你的需求是?
根据dwr的nodes来选中树?

你生成树的json那里不能做处理?

下次发代码记得加上code标签,并格式化
[code="java"]var areaProvinceTree = new Ext.tree.TreePanel({
id: 'areaProvincetree',
width: (mywidth - 200) * 1 / 4 - 2,
height: myheight * 1 / 2,
title: '地域范围',
autoScroll: true,
containerScroll: true,
root: new Ext.tree.AsyncTreeNode({
text: '地域范围',
draggable: false,
isAncestor: true,
checked: false,
id: '-1'
}),
loader: new Ext.tree.TreeLoader({
dataUrl: 'showAreaProvinceTree.action',
//返回所有数据
baseParams: {
type: ''
}
})
});
areaProvinceTree.on('checkchange', function (node, checked) {
node.expand();
node.attributes.checked = checked;
node.eachChild(function (child) {
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
},
areaProvinceTree);
areaProvinceTree.on('load', function () {
//tempMsg.areaProvince为dwr返回的放有节点数据的数组
if (tempMsg != null && tempMsg.areaProvince.length > 0) {
for (var i = 0; i < tempMsg.areaProvince.length; i++) {
areaProvinceTree.getNodeById(tempMsg.areaProvince[i].statisticsObjectId).attributes.checked = true;
}
tempMsg.areaProvince = [];
}
});[/code]