zTree的基本用法

最近被前台技术中一种树状展示数据的问题烦死了,客户需求这样展示数据之间的关系,没办法查资料学习一遍,顺便分享下心得

zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件

  • 兼容 IE、FireFox、Chrome 等浏览器
  • 在一个页面内可同时生成多个 Tree 实例
  • 支持 JSON 数据
  • 支持一次性静态生成 和 Ajax 异步加载 两种方式
  • 支持多种事件响应及反馈
  • 支持 Tree 的节点移动、编辑、删除
  • 支持任意更换皮肤 / 个性化图标(依靠css)
  • 支持极其灵活的 checkbox 或 radio 选择功能
  • 简单的参数配置实现 灵活多变的功能

点击进入api网页:zTree的API

先来看下我们想要实现的效果哦

zTree的基本用法_第1张图片
1.png

这边后台数据库设计部分不多说了,设好父级和子级的关系,查出所有的数据传到前台页面,重点是前台如何展示这样的数据

【部分函数和属性介绍】

  • 核心参数:setting
var setting = {
        view: {
            showIcon: false
        },
        data: {
            simpleData: {
                enable: true,
                idKey: "id",
                pIdKey: "pid"
            }
        },
        edit: {
            enable: true,
            showRemoveBtn: false,
            showRenameBtn: false
        },
        callback: {
            beforeDrag: false,
            onClick: zTreeOnClick
        },
        async:{
            enable: true,
            url: "<%=basePath%>arch_JobArch_getChildNodeJson.do",
            autoParam:["id"],
        }
    };

function zTreeOnClick(event, treeId, treeNode) {
    var jobid = treeNode.id;
    //岗位详情展示
    $.ajax({
        type:"post",
        url:"<%=basePath%>arch_JobArch_getJobDetail.do",
        data:{"jobid":jobid},
        dataType:'json',
        success:function(data,status){
            if(status){
                analyseJobDetail(data);
            }
        }
    });

1.先来看看view: {showIcon: false}属性

设置 zTree 是否显示节点的图标。
默认值:true
true / false 分别表示 显示 / 隐藏 图标

如果属性设置为true,那么效果是这样的


zTree的基本用法_第2张图片
2.png

如果属性设置为false,那么效果是这样的

zTree的基本用法_第3张图片
3.png

这其实只是个人爱好或客户要求而已,没啥好说的,看到能明白干嘛的就好了。

2.setting.data.simpleData

enable:
确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array)
不需要用户再把数据库中取出的 List 强行转换为复杂的 JSON 嵌套格式
默认值:false
true / false 分别表示 使用 / 不使用 简单数据模式
idKey:
节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
默认值:"id"
pIdKey:
节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
默认值:"pId"

3.setting.edit

enable:
设置 zTree 是否处于编辑状态
请在初始化之前设置,初始化后需要改变编辑状态请使用 zTreeObj.setEditable() 方法
默认值: false
true / false 分别表示 可以 / 不可以 编辑
showRemoveBtn:
设置是否显示删除按钮。[setting.edit.enable = true 时生效]
当点击某节点的删除按钮时:
1、首先触发 setting.callback.beforeRemove 回调函数,用户可判定是否进行删除操作。
2、如果未设置 beforeRemove 或 beforeRemove 返回 true,则删除节点并触发 setting.callback.onRemove 回调函数。
默认值:true
true / false 分别表示 显示 / 隐藏 删除按钮
showRenameBtn:
设置是否显示编辑名称按钮。[setting.edit.enable = true 时生效]
当点击某节点的编辑名称按钮时:
1、进入节点编辑名称状态。
2、编辑名称完毕(Input 失去焦点 或 按下 Enter 键),会触发 setting.callback.beforeRename 回调函数,用户可根据自己的规则判定是否允许修改名称。
3、如果 beforeRename 返回 false,则继续保持编辑名称状态,直到名称符合规则位置 (按下 ESC 键可取消编辑名称状态,恢复原名称)。
4、如果未设置 beforeRename 或 beforeRename 返回 true,则结束节点编辑名称状态,更新节点名称,并触发 setting.callback.onRename 回调函数。
默认值:true
true / false 分别表示 显示 / 隐藏 编辑名称按钮

4.setting.callback

beforeDrag:
用于捕获节点被拖拽之前的事件回调函数,并且根据返回值确定是否允许开启拖拽操作
默认值:null
如果返回 false,zTree 将终止拖拽,也无法触发 onDrag / beforeDrop / onDrop 事件回调函数
onClick:
用于捕获节点被点击的事件回调函数

如果设置了 setting.callback.beforeClick 方法,且返回 false,将无法触发 onClick 事件回调函数。
默认值:null

5.setting.async

enable:
设置 zTree 是否开启异步加载模式
默认值:false
true 表示 开启 异步加载模式
false 表示 关闭 异步加载模式
如果设置为 true,请务必设置 setting.async 内的其它参数。
如果需要根节点也异步加载,初始化时 treeNodes 参数设置为 null 即可
url:
Ajax 获取数据的 URL 地址。[setting.async.enable = true 时生效]
默认值:""
设置固定的异步加载 url 字符串,请注意地址的路径,确保页面能正常加载
url 内也可以带参数,这些参数就只能是通过 get 方式提交了,并且请注意进行转码
autoParam:
异步加载时需要自动提交父节点属性的参数。[setting.async.enable = true 时生效]
默认值:[ ]
1、将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]
2、可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]

当页面刚加载时,会调用zTreeOnClick方法到后台查询出所有的父级数据,暂时给用户。当用户点击父级看子级时,这时根据传入的数据异步加载到后台查询所有子级

你可能感兴趣的:(zTree的基本用法)