Ztree的简单使用和后台交互的写法(一)

it2022-05-05  96

一、引入ztree的头文件

<!-- 引入ztree/--> <script type="text/javascript" src="${pageContext.request.contextPath}/lib/ztree/js/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/lib/ztree/js/jquery.ztree.core-3.5.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/lib/ztree/js/jquery.ztree.excheck-3.5.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/lib/ztree/js/jquery.ztree.exhide-3.5.js"></script> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/lib/ztree/css/zTreeStyle/zTreeStyle.css" />

二、正文中ZTree出现的地方写入

<div class="ibox-content" style="height:700px;">   <ul id="tree1" class="ztree"></ul>   //id="tree1"是ZTree的标识 ,class="ztree"是引入ztree的类 </div>

三、js实现树的数据填充

 

$(function(){   var setting = {       data: {   simpleData: {   enable: true,   idKey:"id",   idPKey:"pId",          }  },   async: {   enable: true, //开启异步加载   url:baseCtx+"/media/getOrgZTree.action", //设置获取异步动态加载的数据   dataType: "text",   autoParam:["id"],   otherParam: { },   dataFilter: filter }, callback: {   onClick: onClick  //回调函数为单击操作 } }; //滤波 function filter(treeId, parentNode, childNodes) {   var array = childNodes;   return array; }//单击操作--------------------------------------------------------------------------------------------- function onClick(event, treeId, treeNode, clickFlag) {   if (treeNode.isParent) {   var zTree = $.fn.zTree.getZTreeObj(treeId);   //扩展所有子节点   zTree.expandNode(treeNode); }   //单击后在标题处 重新拼接html,显示为***部门的任务信息概览   document.getElementById('dg_h').innerHTML = '<h5>['+treeNode.name+']任务信息概览</h5>';

     //单击后的操作   onClickAjax(treeNode.name); } //初始化操作---严格按照头文件加载,否则会出现init函数没有定义这种情况------------------------------------------------------------------------------------- function init(){   $.post(baseCtx+"/media/getOrgZTree.action",{id:3},function(data){  //id=3是初始输入,确立根节点的id=3   var result= $.parseJSON(data);   rw_tree=$.fn.zTree.init($("#tree1"),setting, result); //将得到的数据解析并填充到ZTree上 }); } init();}); /** * =====点击节点的操作来获取相应的信息的后台请求操作======================= * ============================= * */ function onClickAjax(treeNodeName) {   $.ajax({   url:baseCtx+"/media/OrgTaskAssess.action",   data:{ ORG_NAME:treeNodeName}, //向后台传递的数据是名字 也可以是id 可以根据实际情况来定   type : 'post',   async : false,   dataType : "json", //返回的数据类型是json   success: function(data){   //alert('got it!');   $('#dg').datagrid('loadData', data);//回调成功后重新加载表格的数据 ,前提是表格的字段已经确定 }, });

 

}

四、后台web请求的写法

1.action的写法

 

package com.*****.media.action;

 

import javax.annotation.Resource;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;

 

import org.apache.struts2.convention.annotation.Action;//bpoimport com.*****.media.bpo.OrgZTreeBPO;import com.*****.common.web.BaseAction;

 

public class OrgZTreeAction extends BaseAction{ private static final long serialVersionUID = 1L;

 

 

private String id; private String name; private String pid;

 

 

/** * 利用Ztree插件获取动态树----------------------------------------------- * @return */ @Action(value = "getOrgZTree") public String getOrgZTree(){ List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();   //第一级数据(根节点)  Map<String, Object> orgMap = new HashMap<String, Object>();   orgMap.put("isParent", true);//设置根节点为父节点   orgMap.put("open", true); //根节点展开   orgMap.put("id", id);//根节点的ID   orgMap.put("name", "TEST"); //根节点的名字   resultList.add(orgMap); //列表中先添加第一级的数据   //第二级数据(下级)   List<Map<String, Object>> OrgresultList1 = new ArrayList<Map<String, Object>>();   OrgresultList1 = orgZTreeBPO.getOrgList(orgMap);//根据第一级节点的数据获取下一级的数据   //判断列表是否为空   if(null != OrgresultList1 && OrgresultList1.size() !=0)   {     for (Map<String, Object> map1 : OrgresultList1) { //将下一级别的数据用循环读取     resultList.add(map1);     //获取第三级数据     List<Map<String, Object>> OrgresultList2 = new ArrayList<Map<String, Object>>();     OrgresultList2 = orgZTreeBPO.getOrgList(map1);     if(null != OrgresultList2 && OrgresultList2.size() !=0)       {         for (Map<String, Object> map2 : OrgresultList2) {         resultList.add(map2);         //获取第四级数据         List<Map<String, Object>> OrgresultList3 = new ArrayList<Map<String, Object>>();         OrgresultList2 = orgZTreeBPO.getOrgList(map2);         if(null != OrgresultList3 && OrgresultList3.size() !=0)           {             for (Map<String, Object> map3 : OrgresultList2) {             resultList.add(map3);              }           }         }       }     } } outputJson(resultList);//输出数据库中获得的数据(数据库中的存储也是以树的形式保存的) System.out.println(resultList); return NONE; }

//字段的get set方法  必须有,不能忽略掉

public String getId() { return id; }

public void setId(String id) { this.id = id; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public String getPid() { return pid; }

public void setPid(String pid) { this.pid = pid; }

2.xml的写法

<!--Ztree获取部门列表--> <resultMap type="map" id="RwgzInfo">   <result property="name" column="ORG_NAME" />  //column 列是数据库中的存储字段,property是Java实体的字段名   <result property="id" column="ORG_ID" />   <result property="pId" column="ORG_HIGHER_ID" /></resultMap>

<select id="getOrgList" parameterType="map" resultMap="RwgzInfo" >   select ORG_ID,ORG_NAME,ORG_HIGHER_ID from yhgl.wpy_org_test <where>   <if test="id!=null and id!=''">     and ORG_HIGHER_ID = #{id}   </if> </where></select>

转载于:https://www.cnblogs.com/Lxiaojiang/p/6038169.html

相关资源:ztree实现的基本功能和数据库交互

最新回复(0)