ztree插件的使用
上面是ztree官方API引入ztree的相关介绍,地址:http://www.treejs.cn/v3/api.php
注:必须先引入jQuery,然后再引入ztree相关js,因为ztree是在jQuery的基础上使用的。
//引入W3C声明 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
//引入插件 <script type="text/javascript" src="js/z_tree/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.core-3.5.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.excheck-3.5.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.exedit-3.5.js"></script> <link rel="stylesheet" href="css/z_tree/zTreeStyle.css" type="text/css">
全部代码:
map.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
//引入W3C声明 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <title>map</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> //引入相关插件 <script type="text/javascript" src="js/z_tree/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.core-3.5.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.excheck-3.5.js"></script> <script type="text/javascript" src="js/z_tree/jquery.ztree.exedit-3.5.js"></script> <link rel="stylesheet" href="css/z_tree/zTreeStyle.css" type="text/css"> //引入devMap.js文件 <script type="text/javascript" src="./js/dev/devMap.js"></script> <script type="text/javascript"> $(function() { getdevnumber(); }); </script> </head> <body> <div id="tools_panel_add" onclick="devnumber()"> <div class="BMapLib_box_name">统计</div> <div id="divztree" class="childClass" style="position: absolute; left: 0px; top:64px;display: none; background: #FFF;"> <div class="diyDialog" style="width: 300px;bsckground:#FFF;"> <ul class="ztree" id="treedivid" style="font-size: 16px;overflow: auto;"> </ul> </div> <div id="divztreenumber" style=" background:#FFF;width: 300px; font-size: 16px;display: none;"> <span>终端总数 :</span> <span id="number"></span> <span>个</span> <div></div> <span>已注册 :</span> <span id="yesnumber"></span> <span>个</span> <div></div> <span>未注册 :</span> <span id="nonumber"></span> <span>个</span> </div> </div> </body> </html>
devMap.js
var dev_number=0; function devnumber(){ if(dev_number==0){ $("#divztree").css("display","none"); console.log("dev_number"+dev_number) }else{ var divo=document.getElementById("divztree"); var divoplay=divo.currentStyle["display"]; if(divoplay=="none"){ $("#divztree").css("display","block"); }else{ $("#divztree").css("display","none"); } } } //分区信息调用 function getdevnumber (){ getSectorsBC(loginName,'1','10000');//这里采用调用js的方法,可替换成别的方式,如ajax异步 window.event.cancelBubble = true;//阻止冒泡时间 } //分区返回数据 function getSectorsCallBackBC(data){ console.log(data); //alert(data); if(data.result == '0') { var datas=data.msg[0].rows; if(datas.length<0){ }else{ $.fn.zTree.init($("#treedivid"), setting, datas); dev_number=1; } } else { usedMessageTb('1', "获取分区失败"); } } //setting相关配置可参考ztreesetting详细文档 var setting = { check: { enable: false, chkStyle: "checkbox" }, data: { simpleData: { enable: true, idKey: "id", pIdKey: "parentId", rootPId: 0 } }, async: { enable: true }, view: { expandSpeed: false, autoCancelSelected: false, selectedMulti: false, showLine:true, showTitle: false }, callback: { onClick:getSectorID //点击结点后调用的方法 } }; function getSectorID(event, treeId, treeNode) { var sectorID = treeNode.id; $('#sectorId').val(sectorID); // 展开树节点 var zTree = $.fn.zTree.getZTreeObj("treedivid"); zTree.expandNode(treeNode, true, false, true); mapgetDevsBC(sectorID); }; //调用js接口,访问后台终端数据 function mapgetDevsBC(sectorID){ console.log("id:"+sectorID); var devmap={"dev_state":3,"dev_switchs":3,"sector_id":sectorID,"condition":"","page":1,"perPage":10000}; console.log(devmap); getDevsBC(loginName,devmap); }; //终端数据返回 function getDevsCallBackBC(data){ console.log("datadatadata:"+data); if(data.result=='0'){ var totle=data.msg[0].total;//注册总数 var rows=data.msg[0].rows; var dev_stateyes=0;//注册成功个数 var dev_stateno=0;//注册失败个数 for(var i=0,l=rows.length;i<l;i++){ if(rows[i].dev_state=='0'){ dev_stateyes++; }else{ dev_stateno--; } } console.log("**************************"+totle+"********"+dev_stateyes+"*********"+dev_stateno); $('#number').html(totle); $('#yesnumber').html(dev_stateyes); $('#nonumber').html(dev_stateno); $("#divztreenumber").css("display", "block"); }else{ usedMessageTb('1', "获取终端数量失败"); console.log("reason:"+data.reason); $("#divztreenumber").css("display", "none"); } };
bc_microsys.js
//验证是否为空 function checkNullOfData(data) { if(null == data || "" == data) { return true; } else { return false; } } //验证特殊符号 function illegalChar(str) { if($.inArray("!",str) >= 0) { return false; } if($.inArray("@",str)>= 0) { return false; } if($.inArray("$",str)>= 0) { return false; } if($.inArray("%",str)>= 0) { return false; } if($.inArray("_",str)>= 0) { return false; } if($.inArray(".",str)>= 0) { return false; } if($.inArray("'",str)>= 0) { return false; } if($.inArray("\"",str)>= 0) { return false; } if($.inArray("\\",str)>= 0) { return false; } if($.inArray("/",str)>= 0) { return false; } if($.inArray(",",str)>= 0) { return false; } if($.inArray("#",str)>= 0) { return false; } if($.inArray("<",str)>= 0) { return false; } if($.inArray(">",str)>= 0) { return false; } if($.inArray("(",str)>= 0) { return false; } if($.inArray(")",str)>= 0) { return false; } return true; } /** * 获取用户权限下的分区信息 */ function getSectorsBC(loginName, page, perPage) { var result = "1"; var reason = "20300"; if(checkNullOfData(loginName)) { alert(loginName) reason = "20301"; return getSectorsCallBackBC(getResult_BC(result, reason)); } else { if(!illegalChar(loginName)) { return getSectorsCallBackBC(getResult_BC("1", "10010")); } } if(checkNullOfData(page)) { page = '1'; } else { if(!illegalChar(page)) { return getSectorsCallBackBC(getResult_BC("1", "10010")); } } if(checkNullOfData(perPage)) { perPage = '20'; } else { if(!illegalChar(perPage)) { return getSectorsCallBackBC(getResult_BC("1", "10010")); } } //跨域 $.ajax( { type: 'get', url: requestUrl + 'bc_getSecotrInfosByUser.action', data: 'loginName=' + loginName + '&page=' + page + '&perPage=' + perPage + '&time=' + new Date().getTime(), dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'getSectorsCallBackBC', success:function(data) { } }); } /** * 获取用户权限下的终端信息 * */ function getDevsBC(loginName, dev) { var result = "1"; var reason = "20300"; if(checkNullOfData(loginName)) { reason = "20301"; return getDevsCallBackBC(getResult_BC(result, reason)); } else { if(!illegalChar(loginName)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } if(checkNullOfData(dev)) { reason = "20310"; return getDevsCallBackBC(getResult_BC(result, reason)); } var dev_state = dev.dev_state; if(checkNullOfData(dev_state)) { reason = "20311"; return getDevsCallBackBC(getResult_BC(result, reason)); } else { if(!illegalChar(dev_state)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } var dev_switchs = dev.dev_switchs; if(checkNullOfData(dev_switchs)) { reason = "20312"; return getDevsCallBackBC(getResult_BC(result, reason)); } else { if(!illegalChar(dev_switchs)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } var sector_id = dev.sector_id; if(checkNullOfData(sector_id)) { sector_id = ''; } else { if(!illegalChar(sector_id)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } var condition = dev.condition; if(checkNullOfData(condition)) { condition = ''; } else { if(!illegalChar(condition)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } var page = dev.page; var perPage = dev.perPage; if(checkNullOfData(page)) { page = '1'; } else { if(!illegalChar(page)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } if(checkNullOfData(perPage)) { perPage = '20'; } else { if(!illegalChar(perPage)) { return getDevsCallBackBC(getResult_BC("1", "10010")); } } //跨域 $.ajax( { type: 'get', url: requestUrl + 'bc_getDevInfosByUser.action', data: 'loginName=' + loginName + '&dev_state=' + dev_state + '&dev_switchs=' + dev_switchs + '§or_id=' + sector_id + '&condition=' + encodeURI(condition) + '&page=' + page + '&perPage=' + perPage + '&time=' + new Date().getTime(), dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'getDevsCallBackBC', success:function(data) { } }); }
因为后台数据在宁外一个项目中取得,宁外一个项目只开放js接口,所以采用的是跨域请求获取后台数据。如果在同一个项目中,可以直接使用ajax异步请求