ext columntree 不能动态加载数据 有哪位大哥帮忙看下 在线等

    最近用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;
//		  	 			}
//		  	 		}
//		  	 		
//	  	 		}
//	  	 	}
	  	 }
	  });	  
	  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值