最近用ext做项目开发,其中有两棵树是用到ext的columntree,第一棵树因为数据量小,一次性加载所以没什么问题,但是第二棵数据量大,要异步获取数据,就出现了问题:
根节点 ext会自动去加载解析并创建子节点,第二级节点就只会发送请求,不会去创建,而且加载节点的那个动态的图表也没有了,但是第三级节点ext又会自动去加载解析并创建子节点,这个问题搞了两天去了,实在是没办法了。
希望哪位朋友帮忙解决下
将原来的js加上fy_colunm_tree.on("expandnode",getNodes);事件后,就没有原来columntree树的效果,而且不设置text属性节点就只有个文件价
fy_colunm_tree = new Ext.tree.ColumnTree({ id:'fycolunmtree', width: 680, height:370, border: false, lines: false, animate: false, rootVisible: true, autoDestory:true, autoScroll:true, checkModel:'cascade',//级联多选,如果不需要checkbox,该属性去掉 onlyLeafCheckable: false,//所有结点可选,如果不需要checkbox,该属性去掉 autoScroll:true, expanded:true, enableDD:true, renderTo: 'tree-ct-fy-colunm', tbar: [{ text:'确定', listeners: { 'click': function() { alert(findCheckedNodes()); }, scope:this } },{ text:'取消', listeners: { 'click': function() { FyColunmTreeWin.hide(); }, scope:this } }], columns:[{ header:'树', width:330, dataIndex:'mod_cn' },{ header:'级别', width:700, dataIndex:'right_nm' }], loader: new Ext.tree.TreeLoader({ dataUrl:'include/fyColunmTree.jsp?type=gy', preloadChildren:true, // directFn:getNodes, uiProviders:{ 'col': Ext.ux.ColumnTreeCheckNodeUI } }), root:root }); } fy_colunm_tree.on("beforeload",function(node){ //debugger; var parameter = ''; if(node.attributes.id==-1){ parameter='type=zjfy&id=440000&fydm=&bmdm=&leves=6'; }else{ parameter = 'type='+toundefinedvalue(node.attributes.nextType)+'&fydm='+toundefinedvalue(node.attributes.fydm) +'&bmdm='+toundefinedvalue(node.attributes.bmdm)+'&id='+toundefinedvalue(node.attributes.id)+'&leves=' +toundefinedvalue(node.attributes.leves); } //debugger; node.loader= new Ext.tree.TreeLoader( { dataUrl:'include/fyColunmTree.jsp?'+parameter, //directFn:getNodes, uiProviders:{ 'col': Ext.ux.ColumnTreeCheckNodeUI } }); }); // fy_colunm_tree.on("expandnode",getNodes); function getNodes(node){ fy_colunm_tree.un("beforeload"); var parameter = ''; if(node.attributes.id==-1){ parameter='type=gy'; }else{ parameter = 'type='+toundefinedvalue(node.attributes.nextType)+'&fydm='+toundefinedvalue(node.attributes.fydm)+'&bmdm='+toundefinedvalue(node.attributes.bmdm)+'&id='+toundefinedvalue(node.attributes.id)+'&leves='+toundefinedvalue(node.attributes.leves); } // node.loader= new Ext.tree.TreeLoader( { // dataUrl:'include/fyColunmTree.jsp?'+parameter, // //directFn:getNodes, // uiProviders:{ // 'col': Ext.tree.ColumnTreeNodeUI // } // }); // debugger; // if(!node.isLoaded()){ // node.reload(); // } //node.un("expand"); if(!node.leaf && node.getDepth()!=0){ Ext.Ajax.request({ url: 'include/fyColunmTree.jsp?'+parameter, method: 'GET', success: function(response){ //成功返回 var jsonObj = Ext.util.JSON.decode(response.responseText); // 得到服务器返回的json串,并用json.js解析过对象数组 debugger; if(!node.firstChild){ for(var i=0;i<jsonObj.length;i++ ){ var childNode=new Ext.tree.AsyncTreeNode({ //text:jsonObj[i].mod_cn, id:jsonObj[i].id, draggable:false, leaf:jsonObj[i].leaf, cls:jsonObj[i].cls, iconCls:jsonObj[i].cls, baseAttrs: { uiProvider: Ext.ux.ColumnTreeCheckNodeUI} }); childNode.attributes.fydm=jsonObj[i].fydm; childNode.attributes.bmdm=jsonObj[i].bmdm; childNode.attributes.mod_cn=jsonObj[i].mod_cn; childNode.attributes.right_nm=jsonObj[i].right_nm; //childNode.attributes.leaf=jsonObj[i].leaf; childNode.attributes.nextType=jsonObj[i].nextType; childNode.attributes.type=jsonObj[i].type; childNode.attributes.leves=jsonObj[i].leves; childNode.attributes.pid=jsonObj[i].pid; childNode.attributes.id=jsonObj[i].id; childNode.attributes.checked=jsonObj[i].checked; childNode.attributes.expandable=jsonObj[i].expandable; // childNode.attributes.cls=jsonObj[i].cls; childNode.attributes.baseAttrs= { uiProvider: Ext.ux.ColumnTreeCheckNodeUI} ; node.appendChild(childNode);//将当前节点添加为待展开节点子节点 // debugger; var parameter = ''; if(node.attributes.id==-1){ parameter='type=gy'; }else{ parameter = 'type='+toundefinedvalue(node.attributes.nextType)+'&fydm='+toundefinedvalue(node.attributes.fydm)+'&bmdm='+toundefinedvalue(node.attributes.bmdm)+'&id='+toundefinedvalue(node.attributes.id)+'&leves='+toundefinedvalue(node.attributes.leves); } } } // // node.firstChild.remove();//删除当前节点第一个孩子节点(loading节点) }, failure: test1 }); } } function test1(){ } function toundefinedvalue(value){ if(value == undefined || value == 'undefined'){ return ''; }else{ return value; } } //选择树的时候触发的事件 // fy_colunm_tree.on('check',function(node){ // var checkbox=document.getElementsByName(node.id); // node.getUI().checkbox.value=node.id; // //debugger; // if(node.attributes.checked){ // for(var i=0;i<checkbox.length;i++){ // checkbox[i].checked='checked'; // } // }else{ // for(var i=0;i<checkbox.length;i++){ // checkbox[i].checked=''; // } // } // }); //root.expand(false,false); var fyColunmObj = {fydm:'',fylev:'',bmdm:'',hytdm:'',rydm:''}; findCheckedNodes = function(){ var checkedNodes = fy_colunm_tree.getChecked(); var dm=''; if(checkedNodes){ for(var i=0;i<checkedNodes.length;i++){ if(dm==''){ dm+=checkedNodes[i].attributes.id }else{ if(checkedNodes[i-1].attributes.type!=checkedNodes[i].attributes.type && checkedNodes[i].attributes.type=='fy'){ dm+="|"+checkedNodes[i].attributes.id; }else if(checkedNodes[i-1].attributes.type!=checkedNodes[i].attributes.type && checkedNodes[i].attributes.type=='bm'){ dm+="-"+checkedNodes[i].attributes.id; }else if(checkedNodes[i-1].attributes.type!=checkedNodes[i].attributes.type && checkedNodes[i].attributes.type=='hyt'){ dm+="="+checkedNodes[i].attributes.id; }else if(checkedNodes[i-1].attributes.type!=checkedNodes[i].attributes.type && checkedNodes[i].attributes.type=='hyt'){ dm+="_"+checkedNodes[i].attributes.id; }else{ dm+=":"+checkedNodes[i].attributes.id; } } } } return dm; // var fydm=''; // var bmdm=''; // var hytdm=''; // var rydm=''; // var fybmdm=''; // if(checkedNodes){ // for(var i=0;i<checkedNodes.length;i++){ // checkedNodes[i]; // if(node.attributes.type=='fy'){ // if(bmdm==''){ // bmdm+= fybmdm; // }else{ // bmdm+=":"+fybmdm; // } // fybmdm=''; // if(fydm==""){ // fydm += node.attributes.id; // }else{ // fydm += ":"+node.attributes.id; // } // } // if(node.attributes.type=='bm'){ // var curfydm = fydm.split(":")[fydm.split(":").length-1]; // if(fybmdm==""){ // if(node.attributes.pid==curfydm){ // fybmdm += node.attributes.id; // } // }else{ // fybmdm += ","+node.attributes.id; // } // } // // } // } } });