Easyui tree 异步加载

1、效果图
【图1】

【图2】


2、js代码
$(function(){
	$('#treeId').tree({
		url: 'myController.do?loadtreeFun&projectId=${projectId}',
		checkbox:true,
		animate:true,
		lines:true,
		onlyLeafCheck:true,//只选择联系人
		onClick:function(node){
			
		},
		onBeforeExpand:function(node,param){
			$('#treeId').tree('options').url='myController.do?loadtreeFun&projectId=${projectId}';
		},
		onContextMenu: function(e,node){//右键菜单
			e.preventDefault();//阻止默认的右键菜单行为
			$(this).tree('select',node.target);//选中
			var b = $(this).tree('isLeaf', node.target);
			if(b) {
				//联系人 
				$('#treeMenu1').menu('show', {
					left: e.pageX,
					top: e.pageY
				});
			} else {
				//联系组 
				$('#treeMenu').menu('show', {
					left: e.pageX,
					top: e.pageY
				});
			}
		},
		onLoadSuccess: function(node, data){
			//$('#treeId').tree('expandAll');//展开所有节点
			var rootNode = $("#treeId").tree('getRoot');
			$('#treeId').tree('expand',rootNode.target);
		}
	});
});
/*确定:添加联系人手机号码到父窗口‘联系人电话’*/  
function addMobile(){
 var nodes = $('#treeId').tree('getChecked');
 var str = '';
 $.each(nodes,function(n,node){
  if(node){
	var data = node.text.split(':');//中文冒号
	if(data[1])
		{
		if (str != '') {
	  		str += (";"+data[1]);
	  	} else {
	  		str = data[1];
	  	}
		}
  	
  }
 });
 //alert(str);
 parent.addMobile(str);
 parent.closeChooseDlg();
}


3、java代码
	@RequestMapping(params={"loadtreeFun"})
	public void loadtreeFun(HttpServletRequest request,HttpServletResponse response) {
	    Map condition = convertParameters(request.getParameterMap());
	    //System.out.println(UtilStr.dumpMap(condition));
	    SessionContext sc=new SessionContext(request);
	    String id=(String)condition.get("id");//当前选中节点Id
	    String projectId=(String)condition.get("projectId");//项目Id
	    JSONArray rtnJsonArray = new JSONArray();
	    if(UtilStr.isNullOrBlank(id)){
	    	JSONObject jsonObject= new JSONObject();
	    	List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
	    	if (UtilStr.isNotNullAndBlank(projectId)) {
	    		list = service.getFun(id,Integer.valueOf(projectId));
			}
	    	if (null!=list&&list.size()>0) {
	    		Map<String, Object> map=list.get(0);
	    		ClassA root=(ClassA)map.get("root");//根节点
	    		List<ClassA> ClassAs=(List<ClassA>) map.get("ClassAs");//二级组
	    		List<ClassB> ClassBs=(List<ClassB>) map.get("ClassBs");//二级联系人
	    		JSONObject jsonobj1=JSONObject.parseObject(root.toString());//根节点JSONObject
	    		JSONArray jsonObject2=JSONArray.parseArray(ClassAs.toString());//二级组JSONObject
	    		JSONArray jsonObject3=JSONArray.parseArray(ClassBs.toString());//二级联系人JSONObject
	    		jsonObject2.addAll(jsonObject3);
	    		jsonobj1.put("children", jsonObject2);
	    		rtnJsonArray.add(jsonobj1);
			}else{
			//只有1个初始根节点
			jsonObject.put("id", "");
		    	jsonObject.put("text", "通信录");
		    	jsonObject.put("state", "closed");
			jsonObject.put("children", null);
			rtnJsonArray.add(jsonObject);
			}
			renderJson(response,rtnJsonArray.toJSONString());
	    }else{
	    	//非叶子节点的nodeId
	    	JSONObject jsonObject= new JSONObject();
	    	List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
	    	if (UtilStr.isNotNullAndBlank(projectId)) {
	    		list = service.getFun(id,Integer.valueOf(projectId));
		}
	    	if (null!=list&&list.size()>0) {
	    		//list可能为[{ClassAs=[], ClassBs=[]}]
	    		Map<String, Object> map=list.get(0);
	    		List<ClassA> ClassAs=(List<ClassA>) map.get("ClassAs");//超过二级组
	    		List<ClassB> ClassBs=(List<ClassB>) map.get("ClassBs");//超过二级联系人
	    		//
	    		JSONArray jsonArray2=null;
	    		if (null!=ClassAs&&ClassAs.size()>0) {
	    			jsonArray2=JSONArray.parseArray(ClassAs.toString());//二级组JSONObject
				}
	    		JSONArray jsonArray3=null;
	    		if (null!=ClassBs&&ClassBs.size()>0) {
	    			jsonArray3=JSONArray.parseArray(ClassBs.toString());//二级联系人JSONObject
				}
	    		//
	    		if (null!=jsonArray2) {
	    			if (null!=jsonArray3) {
	    				jsonArray2.addAll(jsonArray3);
					}
	    			renderJson(response,jsonArray2.toJSONString());
				}else{
					if (null!=jsonArray3) {
						renderJson(response,jsonArray3.toJSONString());
					}else{
						renderJson(response,"false");//onBeforeExpand:Fires before node is expanded, return false to cancel this expand action.
					}
				}
			}
	    }
	}

猜你喜欢

转载自franciswmf.iteye.com/blog/2302331