当前位置: 代码迷 >> Web前端 >> jQuery插件TreeView默许展开第一层
  详细解决方案

jQuery插件TreeView默许展开第一层

热度:171   发布时间:2012-10-24 14:15:58.0
jQuery插件TreeView默认展开第一层

后台代码添加children属性:

?

		response.setHeader("Cache-Control", "no-cache");
		response.setContentType("text/json;charset=UTF-8");
		try {
			request.setCharacterEncoding("utf-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		String id = request.getParameter("root");
		String root = request.getParameter("spacename");
		String output = "";
		if(id==null){
			return; 
		}else if("source".equals(id)){  
			output = generateInitTreeString(root);
		}else{
			output = generateTreeChildNodeString(id);
		}
		response.getWriter().println(output);
	}
	
	private String generateInitTreeString(String root){  
		StringBuilder jsonString = new StringBuilder();
		jsonString.append("[");
		TreeDao dao = new TreeDao();
		List<Category> categorys = dao.getRoot(root);
		int i = 0;
		for(Category category : categorys){
			if(i > 1){
				jsonString.append(",");
			}
			jsonString.append(toJSONString(category));
			i++;
		}
		jsonString.append("]}");
		jsonString.append("]");
		return jsonString.toString();
	}
	
	private String toJSONString(Category category){
		StringBuilder sb = new StringBuilder();
		sb.append("{");
		sb.append("\"id\":\""+category.getCatId()+"\"");
		sb.append(",\"text\":\""+generateLinkString(category)+"\"");
		sb.append(",\"classes\":\""+category.getCssClass()+"\"");
		if(category.isRoot()){
			sb.append(",\"expanded\":true");
		}else{
			sb.append(",\"expanded\":false");
		}
		sb.append(",\"hasChildren\":"+category.hasChild());
		if(!"".equals(category.getImageName())){
			sb.append(",\"imagepath\":\"url("+category.getImageName()+")\"");
		}
		if(category.isRoot()){
			sb.append(",\"children\":[");
		}else{
			sb.append("}");
		}
		return sb.toString();
	}
	
	private String generateLinkString(Category category){
		String link = "<a href='"+category.getHrefAddress()+"' target='mainarea'>"+category.getCatTitle()+"</a>";
		return link;
	}

?

去掉根节点下placeholder节点: ? ?jquery.treeview.async.js ? ? 35行

?

?

var branch = $("<ul/>").appendTo(current);
				if(!this.isroot){                        //在后台添加isroot属性,根节点不需要执行下面的代码,否则重复点击不加载数据,
				   if (this.hasChildren) {
					 current.addClass("hasChildren");
					 createNode.call({
						text:"placeholder",
						id:"placeholder",
						children:[]
					 }, branch);
				   }
				}
? ?

?

?

  相关解决方案