博客列表 >zTree简介

zTree简介

Y的博客
Y的博客原创
2017年09月25日 04:57:141853浏览

0 zTree简介 

树形控件的使用是应用开发过程中必不可少的。zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。 

0.0 zTree的特点
 •最新版的zTree将核心代码按照功能进行了分割,不需要的代码可以不用加载,如普通使用只需要加载核心的jquery.ztree.core-3.5.js,需要使用勾选功能加载jquery.ztree.excheck-3.5.min.js,需要使用编辑功能加载jquery.ztree.exedit-3.5.min.js
 •采用了延迟加载技术,上万节点轻松加载,即使在 IE6 下也能基本做到秒杀
 •兼容 IE、FireFox、Chrome、Opera、Safari 等浏览器
 •支持 JSON 数据
 •支持静态 和 Ajax 异步加载节点数据
 •支持任意更换皮肤 / 自定义图标(依靠css)
 •支持极其灵活的 checkbox 或 radio 选择功能
 •提供多种事件响应回调
 •灵活的编辑(增/删/改/查)功能,可随意拖拽节点,还可以多节点拖拽
 •在一个页面内可同时生成多个 Tree 实例
 •简单的参数配置实现,灵活多变的功能

1.1 zTree的配置
zTree的配置采用Json格式,按照配置的类型分为view(可视界面相关配置)、data(数据相关配置)、check(复选框相关配置)、callback(各类事件的回调函数配置)、async(zTree异步加载配置),一下是我们经常会使用到的一些配置及说明,其他详细配置可以参考zTree官方API文档的详细介绍。 

var setting = {
  view: {
  selectedMulti: true, //设置是否能够同时选中多个节点
  showIcon: true, //设置是否显示节点图标
  showLine: true, //设置是否显示节点与节点之间的连线
  showTitle: true, //设置是否显示节点的title提示信息
  },
  data: {
   simpleData: {
   enable: false, //设置是否启用简单数据格式(zTree支持标准数据格式跟简单数据格式,上面例子中是标准数据格式)
   idKey: "id", //设置启用简单数据格式时id对应的属性名称
   pidKey: "pId" //设置启用简单数据格式时parentId对应的属性名称,ztree根据id及pid层级关系构建树结构
  }
  },
  check:{
  enable: true  //设置是否显示checkbox复选框
  },
  callback: {
  onClick: onClick,  //定义节点单击事件回调函数
  onRightClick: OnRightClick, //定义节点右键单击事件回调函数
  beforeRename: beforeRename, //定义节点重新编辑成功前回调函数,一般用于节点编辑时判断输入的节点名称是否合法
  onDblClick: onDblClick, //定义节点双击事件回调函数
  onCheck: onCheck  //定义节点复选框选中或取消选中事件的回调函数
  },
  async: {
  enable: true,   //设置启用异步加载
  type: "get",   //异步加载类型:post和get
  contentType: "application/json", //定义ajax提交参数的参数类型,一般为json格式
  url: "/Design/Get",  //定义数据请求路径
  autoParam: ["id=id", "name=name"] //定义提交时参数的名称,=号前面标识节点属性,后面标识提交时json数据中参数的名称
  }
 };

需要注意的是,zTree的事件回调部分,基本上每一个事件都对应一个beforeXXX事件,比如onClick事件对应有一个beforeOnClick事件,主要用于控制相关事件是否允许执行,如果before事件返回false,则取消执行对应相关事件。 

1.2 zTree的数据格式
 zTree的每一个节点都是一个treeNode对象,treeNode对象经常用到的属性和方法如下:

treeNode: {
  name, //节点显示的文本
  checked, //节点是否勾选,ztree配置启用复选框时有效
  open, //节点是否展开
  icon, //节点的图标
  iconOpen, //节点展开式的图标
  iconClose, //节点折叠时的图标
  id,  //节点的标识属性,对应的是启用简单数据格式时idKey对应的属性名,并不一定是id,如果setting中定义的idKey:"zId",那么此处就是zId
  pId, //节点parentId属性,命名规则同id
  children, //得到该节点所有孩子节点,直接下级,若要得到所有下属层级节点,需要自己写递归得到
  isParent, //判断该节点是否是父节点,一般应用中通常需要判断只有叶子节点才能进行相关操作,或者删除时判断下面是有子节点时经常用到。
  getPath() //得到该节点的路径,即所有父节点,包括自己,此方法返回的是一个数组,通常用于创建类似面包屑导航的东西A-->B-->C 
  }

zTree的数据源一般有标准数据格式、简单数据格式两种,标准数据格式通过指定节点的chidren属性构建层级关系,而简单数据格式根据根据id,pid属性构建层级关系,我们在应用开发中使用关系型数据库,一般采用的都是简单数据格式。

标准数据格式

var nodes = [
 {name: "父节点1", children: [
 {name: "子节点1"},
 {name: "子节点2"}
 ]}
];

简单数据格式

var nodes = [
 {id:1, pId:0, name: "父节点1"},
 {id:11, pId:1, name: "子节点1"},
 {id:12, pId:1, name: "子节点2"}
];

注意zTree的默认配置是不启用简单数据格式,使用简单数据格式一定要在setting中进行简单数据格式的相关配置。


1.3 zTree的常用方法
zTree的主要操作方法介绍如下 
获取zTree对象:var treeObj = $.fn.zTree.getZTreeObj("tree");
增加节点:addNodes(parentNode,index,newNodes,isSlient)

parentNode:指定的父节点,如果增加根节点,请设置 parentNode 为 null 即可

index:新节点插入的位置(从 0 开始),index = -1 时,插入到最后,此参数可忽略

newNodes:需要增加的节点数据 JSON 对象集合,数据只需要满足 zTree 的节点数据必需的属性即可 

isSilent:true 时,添加节点后不展开父节点,其他值或缺省状态都自动展开

 勾选或取消勾选全部节点:checkAllNodes(checked);
 checked参数为true时全部勾选,为false时全部取消勾选。
 勾选或取消勾选单个节点:checkNode(node, checked, checkedTypeFlag,callbackFlag);
 node:要进行操作的节点
 checked:为true勾选,为false取消勾选
 checkeTypeFlag:为true表示对当前结点的子节点及父节点进行勾选状态的联动,为false不联动
 callbackFlag:为true时表示执行beforeOnCheck和onCheck事件的回调函数,为false不执行
 编辑节点
 edit(node);  使节点处于编辑状态,必须引用jquery.ztree.exedit 扩展。
 展开或折叠全部节点:expandAll(expand);
 expand为true是展开所有节点,为false是折叠所有节点。
 根据节点属性查找结点:getNodesByParam(key,value, parentNode);
 key:属性名
 value:属性值
 parentNode:是否在指定节点下查找,为null表示整个树查找。
 获取被勾选或未被勾选的节点集合:getCheckedNodes(checked);
 checked为true表示获取所有被勾选的节点集合,为false表示所有未被勾选的节点集合
 获取输入框勾选状态被改变的节点集合:getChangeCheckedNodes()

2 zTree的常用操作
2.0 ajax请求数据并创建zTree 

$(function () {
  var setting = {   //此处根据自己需要进行配置
  view: {
   selectedMulti: false
  },
  data: {
   simpleData: {
   enable: true
   }
  },
  callback: {
   onClick: onDesignTreeClick,
   onRightClick: OnRightClick,
   beforeRename: beforeRename,   onCheck:onCheck
  }
  };
  $.ajax({
  type: "Get",
  url: "/Design/GetDesignTreeData",   //ajax请求地址
   success: function (data) {
   $.fn.zTree.init($("#treeZo"), setting, data); //加载数据
  },
  });
 });


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议