zTree静态树与动态树的用法——(七)
0.【简介】
zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件
- 兼容 IE、FireFox、Chrome 等浏览器
- 在一个页面内可同时生成多个 Tree 实例
- 支持 JSON 数据
- 支持一次性静态生成 和 Ajax 异步加载 两种方式
- 支持多种事件响应及反馈
- 支持 Tree 的节点移动、编辑、删除
- 支持任意更换皮肤 / 个性化图标(依靠css)
- 支持极其灵活的 checkbox 或 radio 选择功能
- 简单的参数配置实现 灵活多变的功能
zTree博客地址:http://ztreeapi.iteye.com/
目前zTree作者已经入驻ItEye,如果有什么需要学习的完全可以到作者博客上去学习,而且zTree的版本已经更新了很多次了,下面的内容跟最新版估计会有很大出入,我不能保证下面的教程在最新版可用。zTree真的是非常强大的树组件,希望能对大家有所帮助!
在官网能够下载到zTree的源码、实例和API,其中作者pdf的API写得非常详细(中文的哦)
【部分函数和属性介绍】
- 核心:zTree(setting, [zTreeNodes])
这个函数接受一个JSON格式的数据对象setting和一个JSON格式的数据对象zTreeNodes,从而建立 Tree。
- 核心参数:setting
zTree 的参数配置都在这里完成,简单的说:树的样式、事件、访问路径等都在这里配置
setting举例:
var setting = {
showLine: true,
checkable: true
};
因为参数太多,具体参数详见zTreeAPI
- 核心参数:zTreeNodes
zTree 的全部节点数据集合,采用由JSON对象组成的数据结构,简单的说:这里使用Json格式保存了树的所有信息
zTreeNodes的格式分为两种:利用Json格式嵌套体现父子关系和Array简单格式
①带有父子关系的标准 zTreeNodes 举例:
var zTreeNodes = [
{"id":1, "name":"test1", "nodes":[
{"id":11, "name":"test11", "nodes":[
{"id":111, "name":"test111"}
]},
{"id":12, "name":"test12"}
]},
......
];
②带有父子关系的简单 Array 格式(isSimpleData)的 zTreeNodes 举例:
var treeNodes = [
{"id":1, "pId":0, "name":"test1"},
{"id":11, "pId":1, "name":"test11"},
{"id":12, "pId":1, "name":"test12"},
{"id":111, "pId":11, "name":"test111"},
......
];
③在进入页面时生成树结构:
var zTree;
$(function() {
zTree = $("#tree").zTree(setting, treeNodes);
});
1.静态树用法:
<!DOCTYPE html>
<HTML> <HEAD>
<TITLE> ZTREE DEMO - Simple Data</TITLE>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../css/demo.css" type="text/css">
<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
<!-- <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>-->
<SCRIPT type="text/javascript">
<!--
var setting = {
data: {
simpleData: {
enable: true
}
}
}; var zNodes = [{
id: 1,
pId: 0,
name: "父节点1 - 展开",
open: true
},
{
id: 11,
pId: 1,
name: "父节点11 - 折叠"
},
{
id: 111,
pId: 11,
name: "叶子节点111"
},
{
id: 112,
pId: 11,
name: "叶子节点112"
},
{
id: 113,
pId: 11,
name: "叶子节点113"
},
{
id: 114,
pId: 11,
name: "叶子节点114"
},
{
id: 12,
pId: 1,
name: "父节点12 - 折叠"
},
{
id: 121,
pId: 12,
name: "叶子节点121"
},
{
id: 122,
pId: 12,
name: "叶子节点122"
},
{
id: 123,
pId: 12,
name: "叶子节点123"
},
{
id: 124,
pId: 12,
name: "叶子节点124"
},
{
id: 13,
pId: 1,
name: "父节点13 - 没有子节点",
isParent: true
},
{
id: 2,
pId: 0,
name: "父节点2 - 折叠"
},
{
id: 21,
pId: 2,
name: "父节点21 - 展开",
open: true
},
{
id: 211,
pId: 21,
name: "叶子节点211"
}
]; $(document).ready(function() {
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
});
//-->
</SCRIPT>
</HEAD> <BODY>
<div class="content_wrap">
<div class="zTreeDemoBackground left">
<ul id="treeDemo" class="ztree"></ul>
</div> </div>
</BODY> </HTML>
效果:
aaarticlea/png;base64,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" alt="" />
2.动态树(JSON生成树)
①后台代码封装简单格式Json数据:
public void doGetPrivilegeTree() throws IOException{
String s1 = "{id:1, pId:0, name:\"test1\" , open:true}";
String s2 = "{id:2, pId:1, name:\"test2\" , open:true}";
String s3 = "{id:3, pId:1, name:\"test3\" , open:true}";
String s4 = "{id:4, pId:2, name:\"test4\" , open:true}";
List<String> lstTree = new ArrayList<String>();
lstTree.add(s1);
lstTree.add(s2);
lstTree.add(s3);
lstTree.add(s4);
//利用Json插件将Array转换成Json格式
response.getWriter().print(JSONArray.fromObject(lstTree).toString());
}
②页面使用Ajax获取zTreeNodes数据再生成树
JS代码:
var setting = {
isSimpleData : true, //数据是否采用简单 Array 格式,默认false
treeNodeKey : "id", //在isSimpleData格式下,当前节点id属性
treeNodeParentKey : "pId", //在isSimpleData格式下,当前节点的父节点id属性
showLine : true, //是否显示节点间的连线
checkable : true //每个节点上是否显示 CheckBox
}; var zTree;
var treeNodes; $(function(){
$.ajax({
async : false,
cache:false,
type: 'POST',
dataType : "json",
url: root+"/ospm/loginInfo/doGetPrivilegeTree.action",//请求的action路径
error: function () {//请求失败处理函数
alert('请求失败');
},
success:function(data){ //请求成功后处理函数。
alert(data);
treeNodes = data; //把后台封装好的简单Json格式赋给treeNodes
}
}); zTree = $("#tree").zTree(setting, treeNodes);
});
③最后显示效果
aaarticlea/png;base64,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" alt="" />
3.带有点击事件的zTree(动态设置树的节点与name)
1.页面中准备树的div
<div class="user_left_tree_info">
<div class="user_left_tree_info_title">部门</div>
<div class="hr"></div>
<div class="ztree" id="treeDemo"></div>
</div>
2.页面加载时候请求树:
searchUnitTree(); /**
* 请求树信息
*/
function searchUnitTree(){
$.ajax({
type : "post",
target : "#treeDemo",
dataType : "json",
url : "searchTreeAction2.action",
success : getTree
});
} /**
* 生成树
*/
function getTree(treeList2){
var treeList3 = eval("(" + treeList2 + ")");
var setting = {
data : {
simpleData : {
enable : true,
idKey: "unitId",
pIdKey: "upUnitId",
rootPId : "10",
},
key : {
name : "unitName",
}
},
callback : {
onClick : onClick
}
};
var zNodes = treeList3; //添加 树节点的 点击事件;
var log, className = "dark";
function onClick(event, treeId, treeNode, clickFlag) {
clickOnTree(event, treeId, treeNode, clickFlag);
}
$.fn.zTree.init($("#treeDemo"), setting, zNodes); var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
treeObj.expandAll(true);
} /**
* 点击树节点的同时,将该部门信息对应的部门编号,部门名称,上级部门编号,上级部门名称保存下来
*/
function clickOnTree(event, treeId, treeNode, clickFlag){
//得到该节点的部门编号和部门名字
document.getElementById("bt_unitId").value = treeNode.unitId;
document.getElementById("bt_unitName").value = treeNode.unitName;
/*alert(treeNode.unitId);
alert(treeNode.unitName);*/
if (treeNode.unitId == "10") {
//如果本节点是根节点,那么就不能执行更新和删除操作
$("#unit_change,#unit_delete").attr("disabled","disabled");
} else {
//如果本节点不是根节点,就可以执行更新和删除操作
$("#unit_change,#unit_delete").removeAttr("disabled");
//父节点
var fatherNode=treeNode.getParentNode();
/*alert(fatherNode.unitId);
alert(fatherNode.unitName);*/
//得到父节点的部门编号和部门名称
document.getElementById("bt_upUnitId").value = fatherNode.unitId;
document.getElementById("bt_upUnitName").value = fatherNode.unitName;
}
searchUnit();
} /**
* 点击一下树节点表格输出下级节点的部门信息
*/
function searchUnit() {
$.ajax({
type : "post",
dataType : "json",
url : "searchUnitByUpId.action",
data : {
upUnitId : $("#bt_unitId").val(),
},
success : showTable
});
}
3.后台传JSON串
public String searchTree(){
try {
this.treeList =unitService.getUnitTree2();
} catch (SQLException e) {
e.printStackTrace();
}
JSONArray jsonArray = JSONArray.fromObject(treeList);
this.treeList2 = jsonArray.toString();
return SUCCESS;
}
[{"upUnitId":"","unitName":"中心","unitId":"10"},{"upUnitId":"10","unitName":"人才","unitId":"10001"},{"upUnitId":"10","unitName":"项部","unitId":"10002"},{"upUnitId":"10","unitName":"成果","unitId":"10003"},{"upUnitId":"10","unitName":"SS","unitId":"10009"}]
zTree静态树与动态树的用法——(七)的更多相关文章
- 【zTree】zTree的3.5.26静态树与动态树(实用)
1.静态树: 目录结构:(css与js为下载的原文件夹)
- luogu3703 [SDOI2017]树点涂色(线段树+树链剖分+动态树)
link 你谷的第一篇题解没用写LCT,然后没观察懂,但是自己YY了一种不用LCT的做法 我们考虑对于每个点,维护一个fa,代表以1为根时候这个点的父亲 再维护一个bel,由于一个颜色相同的段一定是一 ...
- 点分治Day2 动态树分治
蒟蒻Ez3real冬令营爆炸之后滚回来更新blog... 我们看一道题 bzoj3924 ZJOI2015D1T1 幻想乡战略游戏 给一棵$n$个点的树$(n \leqslant 150000)$ 点 ...
- 动态树之LCT(link-cut tree)讲解
动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作.其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT( ...
- bzoj 2631: tree 动态树+常数优化
2631: tree Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1716 Solved: 576[Submit][Status] Descrip ...
- 动态树LCT小结
最开始看动态树不知道找了多少资料,总感觉不能完全理解.但其实理解了就是那么一回事...动态树在某种意思上来说跟树链剖分很相似,都是为了解决序列问题,树链剖分由于树的形态是不变的,所以可以通过预处理节点 ...
- zoj 2112 Dynamic Rankings(主席树&动态第k大)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)
为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...
- 动态树Link-cut tree(LCT)总结
动态树是个好玩的东西 LCT题集 预备知识 Splay 树链剖分(好像关系并不大) 动态树(Link-cut tree) 先搬dalao博客 什么是LCT? 动态树是一类要求维护森林的连通性的题的总称 ...
随机推荐
- 如何处理UIVIew addsubview 不显示subview
老代码: addsubview不显示uilabel -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSIn ...
- java 面试随笔
---恢复内容开始--- 1.自我介绍 2.你在项目开发过程中遇到的那些问题! 3.懂bootstrap么?简单介绍一下 4.spring的会话数据是怎样的. 5.为什么会有session 因为htt ...
- Java之Java程序与虚拟机
Java为什么要在虚拟机中运行 简单的来说,Java作为一门高级程序语言,语法复杂,抽象度高,不能直接翻译为机器码在机器上运行,所以设计者就设计了虚拟机,通过编译器将Java程序转换成虚拟机所能识别的 ...
- Python 爬虫入门(一)
毕设是做爬虫相关的,本来想的是用java写,也写了几个爬虫,其中一个是爬网易云音乐的用户信息,爬了大概100多万,效果不是太满意.之前听说Python这方面比较强,就想用Python试试,之前也没用过 ...
- C/C++:copy control (拷贝控制)
前言:当定义一个类的时候,我们显示或者隐式地指定在此类型的对象拷贝,移动,赋值,销毁时做些什么,一个类通过定义五种特殊的成员函数来控制这些操作,包括拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值 ...
- js 读写 cookie 简单实现
const getItem = key => { let ca = document.cookie.split('; '); for (let i = 0; i < ca.length; ...
- servlet的application对象的使用
application对象 1 什么是application对象 ? (1) 当Web服务器启动时,Web服务器会自动创建一个application对象.application对象一旦创建,它将一直存 ...
- python学习(25) BeautifulSoup介绍和实战
BeautifulSoup是python的html解析库,处理html非常方便 BeautifulSoup 安装 pip install beautifulsoup4 BeautifulSoup 配合 ...
- K8S调度之节点亲和性
Node Affinity Affinity 翻译成中文是"亲和性",它对应的是 Anti-Affinity,我们翻译成"互斥".这两个词比较形象,可以把 po ...
- 逻辑回归原理_挑战者飞船事故和乳腺癌案例_Python和R_信用评分卡(AAA推荐)
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...