首先来一个完整的ztree代码

html代码

<form id="addTreeDataFrm" method="post" class="form-horizontal" style="width:300px;">

    <div class="form-group">
<div class="col-sm-8">
<select id="catTreeData" name="catTreeData" class="form-control" >
<option value="" selected="selected">请选择</option>
</select>
</div>
</div> <div class="form-group">
<div class="col-sm-12">
<div id="treeDiv">
<ul id="tree" class="ztree"
style="width:200px;min-height:200px;height:100px;overflow:auto;scroll:y"></ul>
</div>
</div>
</div>
</form>

js

第一步:发送ajax请求,获取json数据体

// 获取分类下拉数据,并初始化分类数据
function getCateData() {
var catStr = $('#goodsType').val();
var catArr = [];
catArr = catStr.split(',');
var catCode = catArr[1];
if(catCode=="ebook"){
catCode="BOOK";
}
var url = PlatForm.getContext() + '/spc/memberRight/getCategoryByCode.do';
// var url ='data/bookCategory.json'
$.ajax({
url: url,
type: 'post',
async: false,
data: {
'catCode': catCode
},
dataType: "json",
success: function (resultData) {
if (resultData == null || resultData.length == 0) {
mif.showErrorMessageBox("当前资源类型暂无分类!");
return false;
}
//显示图书分类下拉框选项
$("#catTreeData").empty();
for (var i = 0; i < resultData.length; i++) {
if ( resultData[i].code=="BOOK"){
$("#catTreeData").append('<option value= "'+ resultData[i].code + '"selected>' + resultData[i].catNametype + '</option>');
}else {
$("#catTreeData").append('<option value=' + resultData[i].code + '>' + resultData[i].catNametype + '</option>');
}
}
//数据转换
getNodeList(resultData);
//第一次初始化数据
var zTreeNodes = $dataMap[resultData[0].code];
//数据转换
initTree(zTreeNodes);
}
});
}

2.对获取的数据体进行处理,提取数据体中的list数据数组datalist

//获取data数据体
function getNodeList(nodeList) {
for (var i = 0; i < nodeList.length; i++) {
var dataNode = nodeList[i];
var datalist = dataNode.datalist; //BOOK 分类码
var catCode = dataNode.code; // book数据
var catName = dataNode.catNametype;//图书分类名称
$dataMap[catCode] = datalist;
$nameMap[catCode] = catName;
}
}

 3.初始化ztree initTree(zTreeNodes),内部需要对数据进行重新包装!!!,也就是getNode(zTreeNodes)

var zTreeObj;
//初始化树
function initTree(zTreeNodes) {
// zTreeNodes = changeDataToZtree(zTreeNodes);
zTreeNodes = getNode(zTreeNodes);
var setting = { check: {
enable: true, //check选项
chkboxType: {"Y": "ps", "N": "ps"}//父子关联
},
view: {
selectedMulti: false
}
};
zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);//绑定ztree对应的树
}

 4 数据转换,最重要的一步,此处要根据返回的list数据格式进行不同的包装。如果返回的格式是如下,也就是含有children字段的

//ztree数据类型转换
function getNode(node) {
var catlogArr = new Array();
for (var i = 0; i < node.length; i++) {
var title = node[i].text + "[" + node[i].id + "]";
if (!node[i].hasOwnProperty("children")) {
// if (node[i].children.length == 0) {
catlogArr.push({
"name": node[i].text,
"id": node[i].id,
"pId": node[i].cattype,
"title": title,
"isParent": node[i].isRef,
"nocheck": null,
"cascadeId": node[i].cascadeId,
"children": null
});
// }
}
else {
catlogArr.push({
"name": node[i].text,
"id": node[i].id,
"pId": node[i].cattype,
// "pId": $catlogData[i].parentClassifyId,
"title": title,
"isParent": node[i].isRef,
"nocheck": null,
"cascadeId": node[i].cascadeId,
"children": getNode(node[i].children)
});
} }
return catlogArr;
}

  如果返回的数据没有children字段,只是简单父子数据格式

//ztree数据类型转换,采用ztree简单数据格式
function getNode(node) {
var catlogArr = new Array();
for (var i = 0; i < node.length; i++) {
//如果是父节点,展开节点
if(node[i].parentId==0){
catlogArr.push({
"name": node[i].name,
"id": node[i].id,
"pId": node[i].parentId,
"open":true,
"isParent":true
});
}else {
catlogArr.push({
"name": node[i].name,
"id": node[i].id,
"pId": node[i].parentId
});
}
}
return catlogArr;
}

  简单数据格式需要注意的是

 simpleData: enable:true,//此处必须为true
       
 var setting = {
check: {
enable: false,
chkboxType: {"Y": "ps", "N": "ps"}
},
view: {
dblClickExpand: false,
showLine: true,
selectedMulti: false
},
data: {
simpleData: {
enable:true,//此处必须为true
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
},
callback: {
beforeClick: function(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("#resTree");
//如果是父节点,则展开
if (treeNode.isParent) {
zTree.expandNode(treeNode);
return false;
} else {
return true;
}
},
onClick: zTreeOnClick
}
};

  

ztree多种数据包装以及相关设置的更多相关文章

  1. 项目一:项目第二天 Jquery ztree使用展示菜单数据 2、 基础设置需求分析 3、 搭建项目框架环境--ssh(复习) 4、 SpringData-JPA持久层入门案例(重点) 5、 Easyui menubutton菜单按钮使用 6、 Easyui messager消息框使用

    1. Jquery ztree使用展示菜单数据 2. 基础设置需求分析 3. 搭建项目框架环境--ssh(复习) 4. SpringData-JPA持久层入门案例(重点) 5. Easyui menu ...

  2. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  3. ggplot2 scale相关设置

     ggplot2   scale相关设置 标度设置:主要用于在ggplot画图后的各个图层进行调整设置. 1.相关属性scale设置 包括scale_size().scale_alpha().scal ...

  4. php curl_setopt的相关设置查询手册

    bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置, ...

  5. 64位 windows10下 Apache2.4 + php7 + phpstorm 相关设置

    64位 windows10下 Apache2.4 + php7 + phpstorm 相关设置   转  https://blog.csdn.net/laurencechan/article/deta ...

  6. DELL服务器iDRAC相关设置

    iDRAC又称为Integrated Dell Remote Access Controller,也就是集成戴尔远程控制卡 iDRAC卡相当于是附加在服务器上的一台小电脑,通过与服务器主板上的管理芯片 ...

  7. 你所不知道的 CSS 阴影技巧与细节 滚动视差?CSS 不在话下 神奇的选择器 :focus-within 当角色转换为面试官之后 NPOI 教程 - 3.2 打印相关设置 前端XSS相关整理 委托入门案例

    你所不知道的 CSS 阴影技巧与细节   关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧,介绍了一些关于 box-shadow  ...

  8. (转)MySQL open_files_limit相关设置

    http://www.cnblogs.com/zhoujinyi/archive/2013/01/31/2883433.html---------------------------MySQL ope ...

  9. java连接SQL数据库(JDBC)相关设置

    2016-06-14 一.SQL server中的相关设置(以sql server 2012 版本为例) 建立一个SQL server 身份认证的服务器登录名 首先启动SQL客户端,以windows身 ...

随机推荐

  1. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_2 请求参数绑定实体类型

    参数封装到javaBean对象中 创建新的包domain.在下面新建Account 实现序列化 的接口,定义几个属性 生成get和set.还有toString的方法 表单 重新发布tomcat jav ...

  2. 解决kubeadm部署kubernetes集群镜像问题

    kubeadm 是kubernetes 的集群安装工具,能够快速安装kubernetes 集群.kubeadm init 命令默认使用的docker镜像仓库为k8s.gcr.io,国内无法直接访问,需 ...

  3. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  4. $q服务——angular

    $q是做为angular的一个服务而存在的,只是对promise异步编程模式的一个简化实现版,源码中剔除注释实现代码也就二百多行,下面开始介绍$q的API. 一.defer对象(延迟对象)可以通$q. ...

  5. [IJCAI-17 口碑商家客流量预测]

    IJCAI-17 口碑商家客流量预测               第 1 赛季截止日期        2017/03/14 赛制介绍 重要时间2月8日 08:00: 评测启动3月7日 10:00: 报 ...

  6. 线性模型-线性回归、Logistic分类

    线性模型是机器学习中最简单的,最基础的模型结果,常常被应用于分类.回归等学习任务中. 回归和分类区别: 回归:预测值是一个连续的实数: 分类:预测值是离散的类别数据. 1.     线性模型做回归任务 ...

  7. 【神经网络与深度学习】用训练好的caffemodel来进行分类

    现在我正在利用imagenet进行finetune训练,待训练好模型,下一步就是利用模型进行分类.故转载一些较有效的相关博客. 博客来源:http://www.cnblogs.com/denny402 ...

  8. Python示例-Json Parse

    import sys import json def main(): # json dump dump_data = {"api.version": sys.api_version ...

  9. 【VS开发】raw socket 的例子

    raw socket 的例子 一. 摘要    Raw Socket: 原始套接字    可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRa ...

  10. 基于Spark的电影推荐系统

    数据文件: u.data(userid  itemid  rating  timestamp) u.item(主要使用 movieid movietitle) 数据操作 把u.data导入RDD, t ...