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

一、引入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;
//bpo
import 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;
}

时间: 2024-11-07 05:48:53

Ztree的简单使用和后台交互的写法的相关文章

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用

  前  言  PHP     学习了好久的PHP,今天做一个可以后台交互的登录页和注册页,没做什么判断,简单的了解一下. 具体的内容分析如下: ① PHP中的数据传输-->>由注册页传输给注册页后台-->>注册页后台经过转码保存实例化的文件 ② 在登录页输入账户密码,点击登录时,获得触发函数:获得由后台传输过来的true或者false---转换页面或者弹出输入错误.    登录页后台获取保存账户密码的实例化文件,通过转码,if判断之后传输给前台登录页TURE或者FALSE. 总共

前端与后台交互所需技术

1.前端请求数据URL的谁来写? 在开发中,URL主要是由后台来写,写好了之后再给前端开发者. 如果后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数:如: select "产品图片","优惠[买2送花茶]","产品名称","商品价格","是否包邮" from tb_goodList where time = "传递过来的参数" 如果没有后面

【zTree】简单实例与异步加载实例

[zTree]简单实例与异步加载实例 我们在项目中经常会需要用到树,这次按照数据库存储的特点重新了做一个小demo,使用zTree来实现这个功能. 简单实例: 首先我们需要在界面中引入代码,很简单,但是很重要,它用来存放加载的树. ps:添加ztree的引用,下载地址:http://www.ztree.me/v3/main.php#_zTreeInfo [html] view plain copy <span style="font-family:KaiTi_GB2312;font-siz

js与后台交互详述(入门篇)

很多新手前端在出去学习的时候往往把注意力放在如何编写页面,如何编写效果上,群里有个朋友问我js是如何与后台交互的,我简单的说一下. 首先需要知道两个东西,一个是客户端,一个是服务器,客户端其实就是我们在上网时候使用的机器,大部分情况下这个客户端就是我们的电脑,包括台式电脑,笔记本电脑,手机,平板之类的.那么服务器是什么?服务器其实也是电脑,准确的说服务器是性能比较强大的电脑,正常情况下一台服务器可以连续半年甚至一年不关机,连续运行,这个技能我们家用电脑大多做不到.正是因为服务器可以保持长时间的运

利用ajax与后台交互容易出现的问题及解决办法

Ajax在当今的前后台交互中可以说是很火的.那么在使用ajax与后台交互的过程中我们会遇到哪些小问题呢. 使用get方法的时候: 1.浏览器的缓存问题:当我们多次访问同一个地址的时候,浏览器不会每次都更新地址,而是将第一次访问到的数据缓存起来,后面访问同样地址的时候直接从缓存中获取数据,而不会从服务器中读取数据,因此如果我们改变后台中的数据,我们访问时数据将不会更新,访问到的数据也不会改变.如何解决这个问题呢?这时我们可以在"url?"后面用"&"符号连接一

运用socket实现简单的服务器客户端交互

Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意

转:简单的RTSP消息交互过程

简单的RTSP消息交互过程 C表示RTSP客户端,S表示RTSP服务端 1.   第一步:查询服务器端可用方法 1.C->S:OPTION request       //询问S有哪些方法可用 1.S->C:OPTION response    //S回应信息的public头字段中包括提供的所有可用方法 2.   第二步:得到媒体描述信息 2.C->S:DESCRIBE request      //要求得到S提供的媒体描述信息 2.S->C:DESCRIBE response  

百度echarts后台交互实例

先看效果图,点击小图标可以切换柱状图和折线图. 首先要做的就是下载百度echarts的包,我下载的是echarts-2.2.7,懒得找的童鞋,可以从这里下载:http://download.csdn.net/detail/sunping177/9721547 找到build下的dist文件夹,复制里面所有文件到项目中,如下图 下面我们看一下代码 先看前台页面 AnalysisSP.aspx AjaxEcharts.js是写好的echarts于后台交互的代码 <div style="heig

ECharts 与struts的后台交互之柱状图

ECharts主页:  http://echarts.baidu.com/index.html ECharts-2.1.8下载地址:  http://echarts.baidu.com/build/echarts-2.1.8.zip ECharts官方实例:  http://echarts.baidu.com/doc/example.html ECharts官方API文档:  http://echarts.baidu.com/doc/doc.html 1.ECharts是百度的开源项目,在其官网