Ext动态异步树的构建格式

Ext.onReady(function(){
// 开启表单提示
	Ext.QuickTips.init();
	// 设置提示信息位置为边上
	Ext.form.Field.prototype.msgTarget = 'side';
	// 树
	NavTree = function() { // navTree类
		var nav;
		var loader;
		var root;
		var leafMenu;
		var dirMenu;
		return {
			init : function() {
				if (!loader) {
					loader = new Ext.tree.TreeLoader({ // 实例化loader
						// TreeLoader
						url : "../../marketrisk/relativerisk/queryTreeData.action"
					});
					loader.on('beforeload', function(treeloader,node) {// 设置参数
								treeloader.baseParams = {
									id :node.id,
									pid:node.parentNode==null ?'' :node.parentNode.id,
									method : 'tree'
								};
							}, this);

				}
				if (!root) {
					root = new Ext.tree.AsyncTreeNode({// 实例化 根节点root
						id : '-1',
						text : "委托人树"
					});
				}
				if (!nav) {
					nav = new Ext.tree.TreePanel({ // 实例化 树面板nav
						title : "委托人树",
						width : 300,
						autoScroll : true,
						animate : true,
						id:'ptree',
						height:550,
						loader : loader,// 加入loader
						root : root, // 加根节点进来
						//checkModel:"cascade",
						checkModel:'cascade',
						listeners: {  
								'dblclick':function(node,e){
										if(!node.isLeaf()){
											return;
										}
										var nodeid=node.id;
										var porids = nodeid.split(",");
										var proids = node.parentNode.id.split(",");
										var proname=node.parentNode.text;
										
										Ext.getBody().mask("数据加载中.请稍等...","x-mask-loading");
										Ext.Ajax.timeout=50000;
										Ext.Ajax.request({
										 url: '../../marketrisk/relativerisk/findBeathByPor.action',
										 method:'post',
										 success: function(response, options){
										 	Ext.getBody().unmask();
									        var str = Ext.util.JSON.decode(response.responseText);
									        var data=eval(str['treeTable']);
									    	Ext.getCmp('pgrid').store.loadData(data);
									    	grid.expandNodes(0);
										 },
										failure : function(response, options) {
											Ext.getBody().unmask();
											alert("failure,come back:")
										},
										 params:{
											'proid': proids[0],
									 		'porid': porids[0],
									 		'proname':proname
									        }
										});
								     }
							},  
						enableDD : false
							// 能拖动
					});
					nav.on("contextmenu", this.showTreeMenu);// 面板上添加右击菜单,调用方法		
				}

			},
			showTreeMenu : function(node, e) {
				nodeSelected = node;
				nodeSelected.select();// 选中的node
				if (node.isLeaf()) { // 如果是叶子
					leafMenu.showAt(e.getPoint());// 显示叶子
				} else {
					dirMenu.showAt(e.getPoint());// 显示目录
				}
			},

			show : function() {
				nav.render("trees"); // 加入div
				nav.getRootNode().toggle();// 根节点触发查询
				//nav.expandAll();   //将所有含有子节点的节点展开
			}
		}
	}();
	
	NavTree.init();// 初始化方法
	NavTree.show();// 显示方法}
});


引用
后台构建json格式:

/**
	 * 将数组转换成json格式
	 */
	private JSONArray listToJson(List list,String p){
		JSONArray jsonArray=new JSONArray();
		
		Iterator iter=list.iterator();
		NodeTree nodes=null;
		while(iter.hasNext()){
			nodes=(NodeTree)iter.next();
			JSONObject obj=new JSONObject();
			if("".equals(p)){
				obj.put("id", nodes.getId()+",1,"+Math.random()*1999999999+Math.random()*134783498);
			}else if("1".equals(p)){
				obj.put("id",nodes.getId()+",2,"+Math.random()*1999679999+Math.random()*134873498);
			}else if("2".equals(p)){
				obj.put("id", nodes.getId()+",3,"+Math.random()*1999999999+Math.random()*1347983498);
			}else if("3".equals(p)){
				obj.put("id", nodes.getId()+",4,"+Math.random()*1999999999+Math.random()*1347783498);
			}
			obj.put("text",nodes.getText());
			obj.put("leaf",0==nodes.getIs_leaf()? false : true);
			
			jsonArray.add(obj);
		}
		return jsonArray;

你可能感兴趣的:(Ajax,json,prototype,ext)