1. 程式人生 > >Ztree樹形動態載入資料

Ztree樹形動態載入資料

一、引入ztree樣式和js
  1. <link rel="stylesheet" href="${pageContext.request.contextPath}/abacus/_res_/css/zTreeStyle/zTreeStyle.css">
  2. <script type="text/javascript" src="${pageContext.request.contextPath}/abacus/_res_/js/lib/jquery.ztree.core.min.js"></script>

二、新增樹形樣式

<div id="menuContent" class="menuContent" 
style="display:none; position: absolute; z-index:9999"> <ul id="treeDemo" class="ztree" style="margin-top:0; width:160px;height:520px; overflow-x: scroll; overflow-y: scroll; border: 1px solid #617775;background: #fff;"></ul> </div> 這是我的表單,
<td style="width:130px;" align="middle"
>所屬稅務機關:</td> <td style="width:200px;"> <input type="text" id="nsrswjgmc" class="nsrswjgmc" style="width:200px;" readonly="readonly"/> <input type="text" id="nsrswjgDm" class="nsrswjgDm" style="display:none;"/> </td>

三、js部分
$(function(){
    //給稅務機關賦值
var nsrswjgmc_default = $
("#bjswjgmc").val(); var nsrswjgDm_default = $("#swjgDm").val(); $("#nsrswjgmc").val(nsrswjgmc_default); $("#nsrswjgDm").val(nsrswjgDm_default); //樹狀查詢並展示 var setting = { view : { dblClickExpand : false }, data : { simpleData : { enable : true, idKey: "id", //設定啟用簡單資料格式時id對應的屬性名稱 pidKey: "pId" //設定啟用簡單資料格式時parentId對應的屬性名稱,ztree根據idpid層級關係構建樹結 } }, callback : { onClick : function(event, treeId, treeNode, clickFlag) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), nodes = zTree .getSelectedNodes(), id_ = "", v = ""; nodes.sort(function compare(a, b) { return a.id - b.id; }); for (var i = 0, l = nodes.length; i < l; i++) { v += nodes[i].name + ","; id_ = nodes[i].id /*alert(nodes[i].PId);*/ } if (v.length > 0) v = v.substring(0, v.length - 1); $("#nsrswjgmc").val(v); $("#nsrswjgDm").val(id_); hideMenu(); //$.fn.zTree.init($("#treeDemo"), setting, []); } } }; $("#nsrswjgmc").click(function(){ var eleOffset = $(this).offset(); var width=$(this).width(); $("#menuContent").css({ left : eleOffset.left + "px", top : eleOffset.top + $(this).outerHeight() + "px", width : width+"px" }).show(); $("#treeDemo").css({ width : width+"px" }); var _url = "${pageContext.request.contextPath}/sssxCxtj/getSwjgByTop.do?swjgDm=${swjgDm}"; $.getJSON(_url, function(data) { if (data !== "" || data !== undefined) { console.log(data); $.fn.zTree.init($("#treeDemo"), setting, data);//展開下拉樹控制元件 } else { console.log("返回資料為空,不能初始化tree;"); } }); $("body").bind("mousedown", onBodyDown); }); function hideMenu() { $("#menuContent").hide(); $("body").unbind("mousedown", onBodyDown); } function onBodyDown(event) { if (!(event.target.id == "menuContent" || $(event.target).parents( "#menuContent").length > 0)) { hideMenu(); } } });
四、java後臺部分程式碼

1、實體必須包括以下欄位:

private String id;//稅務機關程式碼
private String name;//稅務機關名稱
private String pId;//上級稅務機關程式碼
2、從資料庫中獲取list資料
List<Swjg> swjgList = iSwjgSvc.getSwjgByCode(likswjg);
String treeNodesJson = JSONArray.fromObject(swjgList).toString();//list列表轉換成json格式 返回
String newTreeNodesJson = treeNodesJson.replaceAll("PId","pId");
PrintWriter out = null;
try {
    out = response.getWriter();
} catch (IOException e) {
    e.printStackTrace();
}
//利用Json外掛將Array轉換成Json格式
out.print(newTreeNodesJson);
//釋放資源
out.close();
五、效果如下


六、總結

請注意,後臺獲取list轉json時,json的格式中必須包含以下三個欄位:id,name,pId(注意大小寫)

否則樹形載入失敗。