1. 程式人生 > >ztree簡單的使用

ztree簡單的使用

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">jsp頁面</span>
<!DOCTYPE HTML>
<html>
<head><link rel="stylesheet" href="${pageContext.request.contextPath}/js/ztree3.5/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/ztree3.5/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/ztree3.5/js/jquery.ztree.all-3.5.js"></script>
<script type="text/javascript">
	var zNodes = ${tree};//前臺頁面傳來的簡單資料
	  var setting = {  
		   		view: {
		   			  //dblClickExpand: false,
		   			  expandSpeed: 100 //設定樹展開的動畫速度
		   		},
		   		//獲取json資料
		        async : {  
		            enable : true, 
		            url : "${pageContext.request.contextPath}/getTreeUsers.action", // Ajax 獲取資料的 URL 地址  
		            autoParam : [ "id", "name","classType" ], //ajax提交的時候,傳的是id值,<span style="font-family: Arial, Helvetica, sans-serif;">classType:自定義的一個引數,在封裝資料的時候加入的,判斷點選父選單的時候,根據型別傳值</span>

		        },  
		        data:{ // 必須使用data  
		            simpleData : {  
		                enable : true,  
		                idKey : "id", // id編號命名   
		                pIdKey : "pId", // 父id編號命名    
		                rootPId : 0 
		            }  
		        },  
		        // 回撥函式  
		        //?????treeId
		        callback : {  
		            onClick : function(event, treeId, treeNode, clickFlag) {  
		                if(true) {
		               //     alert(" 節點id是:" + treeNode.id + ", 節點文字是:" + treeNode.name);      
		                }  
		            },  
		            //捕獲非同步加載出現異常錯誤的事件回撥函式 和 成功的回撥函式  
		            onAsyncSuccess : function(event, treeId, treeNode, msg){  
		            }  
		        }  
		    };  
		  
		    // 過濾函式  
		    function filter(treeId, parentNode, childNodes) {  
		        if (!childNodes)  
		            return null;  
		        for ( var i = 0, l = childNodes.length; i < l; i++) {  
		           childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');  
		        }  
		        return childNodes;  
		    }  
	$(document).ready(function() {
		$.fn.zTree.init($("#treeDemo"), setting, zNodes);
	});
</script>
<style type="text/css">
ul.ztree {
    margin-top: 0px;
    border: 1px solid #617775;
    background: #FFF none repeat scroll 0% 0%;
    width: 208px;
    height: 730px;
    overflow-x: hidden;
}
</style>
</head>
<body>
	<div style="margin: 0;padding: 0;">
		<ul id="treeDemo" class="ztree"></ul>
	</div>
</body>
</html>
java程式碼

第一次開啟頁面的時候,獲取${tree}

public String getUserGroup() throws IOException {
		DbsUser user = (DbsUser) session.get("dbsUser");
		UserGroupService uservice = new UserGroupServiceImpl();
		UnderUsersService uService = new UnderUsersImpl();
		dbsUsergroups = uservice.findByUser(user);// 我的下屬使用者組
		List<Map<String, Object>> pMaps = new ArrayList<Map<String, Object>>();
		List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("id", 0);
		map.put("name", "西安鐵路局");
		map.put("isParent", true);
		map.put("open", true);
		map.put("iconOpen", "js/ztree3.5/css/zTreeStyle/img/diy/1_open.png");
		map.put("iconClose", "js/ztree3.5/css/zTreeStyle/img/diy/1_close.png");
		for (DbsUsergroup g : dbsUsergroups) {
			Map<String, Object> map1 = new HashMap<String, Object>();
			map1.put("id", g.getDbsGroup().getId());
			// map1.put("pid", 1);
			map1.put("name", g.getDbsGroup().getGroupName());
			map1.put("isParent", true);
			map1.put("classType", "group");
			maps.add(map1);
		}
		map.put("children", maps);
		pMaps.add(map);
		JSONArray json = JSONArray.fromObject(pMaps);
		System.out.println(json.toString());
		tree = json.toString();//此處獲取tree
		return SUCCESS;
	}
每次點選的開啟時候非同步載入的java程式碼
public void getTreeUsers() throws IOException {
		DbsUserService userService = new DbsUserServiceImpl();
		DbsGroupDAO groupDao = new DbsGroupDAO();
		UnderUsersService uService = new UnderUsersImpl();
		List<Map<String, Object>> userMaps = new ArrayList<Map<String, Object>>();
		//二級選單,根據使用者組檢視使用者
		if ("group".equals(classType)) {
			DbsGroup g = groupDao.findById(id);
			DbsUser user = (DbsUser) session.get("dbsUser");
			dbsUnderusers = uService.findByUser(user);// 我的下屬使用者
			for (DbsUnderusers under : dbsUnderusers) {
				DbsUser u = under.getDbsUnderUser();
				Set<DbsGroupofuser> gou = u.getDbsGroupofusers();
				Iterator it = gou.iterator();
				while (it.hasNext()) {
					DbsGroupofuser gos = (DbsGroupofuser) it.next();
					DbsGroup group = gos.getDbsGroup();
					if (g.getId().equals(group.getId())) {
						Map<String, Object> userMap = new HashMap<String, Object>();
						userMap.put("id", u.getId());
						userMap.put("name", u.getRealName());
						userMap.put("url", "querySendMission.action?page=1&id=" + u.getId());
						userMap.put("target", "save");
						userMap.put("classType", "user");//此處封裝自定義型別,是為groupId 還是使用者id
						List<DbsUnderusers> unders = uService.findByUser(u);
						if (unders.size() > 0) {
							userMap.put("isParent", true);
						} else {
							userMap.put("isParent", false);
						}
						// userMap.put("icon", "js/ztree3.5/css/zTreeStyle/img/diy/2.png");
						userMaps.add(userMap);
					}
				}
			}
		//三級以後選單,根據使用者id檢視下屬使用者
		} else {
			DbsUser u = userService.findById(id);
			dbsUnderusers = uService.findByUser(u);// 我的下屬使用者
			for (DbsUnderusers under : dbsUnderusers) {
				DbsUser underUser = under.getDbsUnderUser();
				Map<String, Object> userMap = new HashMap<String, Object>();
				userMap.put("id", underUser.getId());
				userMap.put("name", underUser.getRealName());
				userMap.put("url", "querySendMission.action?page=1&id=" + underUser.getId());
				userMap.put("target", "save");
				userMap.put("classType", "user");
				List<DbsUnderusers> unders = uService.findByUser(underUser);
				if (unders.size() > 0) {
					userMap.put("isParent", true);
				} else {
					userMap.put("isParent", false);
				}
				// userMap.put("icon", "js/ztree3.5/css/zTreeStyle/img/diy/2.png");
				userMaps.add(userMap);
			}
		}
		JSONArray json = JSONArray.fromObject(userMaps);
		System.out.println(json.toString());
		tree = json.toString();
		response.getWriter().print(tree);
	}