下面的代码可以解决动态的给tree添加treeNode,但是我用的是同一个数据源,不同的model,不同的tree可以使用同一个数据源store。有点不明白的是,当使用ItemFileReadStore.fetch(query:{type:'city',onComplete(items,request){
   return items;
}}) 并不能得到items,其实不考虑节点的展开,将ForestStoreModel.root.children = items时,就可以直接动态的添加节点了,但是这样的话tree节点加不上去,必须用原来的数据源,看了dojo.Tree的源码也是这么个TreeNode添加节点的。我想ItemFileReadStore.fetch返回的items和model.root.children不是同一类型的。<script language="JavaScript" type="text/javascript">
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.Tree");
</script>
<script type="text/javascript">
function createTreeStore(){
var treeStore = new dojo.data.ItemFileReadStore({url:'/static/js/dijit/tests/_data/countries.json'});
return treeStore;
}

</script>
<script type="text/javascript">
var treeStore = createTreeStore();
var treeModel = new dijit.tree.ForestStoreModel({
query:{type:'continent'},
store : treeStore,
root: true,
rootId:"Material",
rootLabel:"Material",
childrenAttrs:['children']
});
</script>

<script type="text/javascript">
function createTreeModel(item,treeStore,typeValue){
var newModel = new dijit.tree.ForestStoreModel({
query:{type:typeValue},
store:treeStore,
root:true,
rooId:item,
rootLabel:item || getLabel(item),
childrenAttrs:['children']
});
return newModel;
}

</script>
<script type="text/javascript" src="/static/js/dijit/tests/_testCommon.js"></script>
<div dojoType="dijit.Tree" id="mytree" jsId="mytree" model="treeModel" openOnClick="true">
<script type="dojo/method" event="onClick" args="item">
var url = null;
var tree = dijit.byId('mytree');
var treeModelData = treeModel.root.children;
var treeChild = tree.rootNode.getChildren();
var newTreeModel = createTreeModel(item,treeStore,'country'); //根据不同的type查询出结果集
var newTree = new dijit.Tree({
model: newTreeModel
});



var newTreeModeData = newTreeModel.root.children;
for(var i = 0; i < treeModelData.length; i++){
if(treeModelData[i].name == item.name){
treeChild[i].setChildItems(newTreeModeData);
break;
}
}


if(treeStore.getValue(item,"type") == "country"){
url = treeStore.getValue(item,"link");
window.external.ShowProCategoryFilter(url);
}else if(treeStore.getValue(item,"type") == "city"){
url = treeStore.getValue(item,"link");
window.external.ShowProCategoryFilter(url);
}
</script>
</div>程序可以添加节点,但总是觉得还有些不对,还请高手多多指教。谢谢!