0.页面中准备树的ul

<ul id="treeDemo10" class="ztree" style="display: none;"></ul>

 1.生成部门树的JS

// 查询外部部门结构
var searchUnitTree = function() {
$.ajax({
url : contextPath + '/exam_getUnitTree.action',
async : true,
dataType : 'json',
success : function(response) {
zNodes11 = response.unitTrees;
// 生成树结构
geneUnitTree(zNodes11); },
error : function() {
alert("查询外部部门树失败!!!")
}
});
} // 生成外部部门树
function geneUnitTree(unitTrees) {
$("#treeDemo10").html(""); // 清空树结构
var setting = {
view : {
selectedMulti : false
},
check : {
enable : true
},
data : {
simpleData : {
enable : true,
idKey : "unitId",
pIdKey : "upUnitId",
rootPId : null
},
key : {
name : "name",
}
},
callback : {
beforeCheck : beforeCheck_out,
onClick : zTreeOnClick_out
}
};
var treeNodes11 = unitTrees;
$.fn.zTree.init($("#treeDemo10"), setting, treeNodes11);
}
// 鼠标点击树事件(打印点击的id与名字)
function zTreeOnClick_out(event, treeId, treeNode) {
// alert(treeNode.unitId + ", " + treeNode.name);
alert($("#el_chooseDepart1").text()); }
// 点击前面的复选框事件
function beforeCheck_out(treeId, treeNode) {
className10 = (className10 === "dark" ? "" : "dark");
el_id = treeNode.name;
// 判断点击的节点是否被选中,返回false 和 true
if (!treeNode.checked) {// 选中
showLog10_out(treeNode.name + ',');// 加上逗号加以区分
$("#department_employee_out")
.append(
// 添加部门到下面的选择员工
'<div class="panel panel-default el_departPersons" id="'
+ treeNode.name
+ '">'
+ '<div class="panel-heading"><span class="el_addDepart" >'
+ treeNode.name
+ '</span>&nbsp;&nbsp;'
+ '(人数:<span class="employeeNum">0</span>)</div>'
+ '<div class="panel-body"></div>' + '</div>');
} else { // 点击选中,向让其未选中
noshowLog10_out(treeNode.name + ',', treeNode);
$("#" + treeNode.name).remove();// 反选复选框删除部门
var parentzTree = treeNode.getParentNode();
}
return (treeNode.doCheck !== false);
}
function showLog10_out(str) {
if (!el_chooseDepart1)
el_chooseDepart1 = $("#el_chooseDepart1");
el_chooseDepart1.append("<li class='" + className10 + "' id='" + el_id
+ "'>" + str + "</li>"); if (el_chooseDepart1.children("li").length > 6) {
el_chooseDepart1.get(0).removeChild(el_chooseDepart1.children("li")[0]);
}
} function noshowLog10_out(str, tNode) {
if (!el_chooseDepart1)
el_chooseDepart1 = $("#el_chooseDepart1");
// 删除当前选中的树的名字
el_chooseDepart1.children("#" + el_id).remove();
// 删除当前子的树的名字
if (tNode.isParent) {
var childrenNodes = tNode.children;
if (childrenNodes) {
for (var i = 0; i < childrenNodes.length; i++) {
alert();
var el_id0 = childrenNodes.name;
el_chooseDepart1.children("#" + el_id0).remove(); // result += ',' + childrenNodes[i].id;
// result = getChildNodes(childrenNodes[i], result);
}
}
} }

后台返回的JSON数据格式:

{"unitTrees":[{"name":"部门1","unitId":"1"},{"upUnitId":"1","name":"部门10001","unitId":"10001"},{"upUnitId"
:"10001","name":"部门100010001","unitId":"100010001"},{"upUnitId":"1","name":"部门10002","unitId":"10002"
},{"upUnitId":"10002","name":"部门100020001","unitId":"100020001"},{"upUnitId":"1","name":"部门10003","unitId"
:"10003"}]}

生成的树结构:

 2.根据树的name属性动态设置前面的复选框为选中(根据树节点的名字判断,也可以根据其他属性判断)

  // 获取树对象
var treeObj = $.fn.zTree.getZTreeObj("treeDemo10");
/** 获取所有树节点 */
var nodes = treeObj.transformToArray(treeObj.getNodes());
// 遍历树节点设置树节点为选中
for (var k = 0, length_3 = nodes.length; k < length_3; k++) {
if (unitName[j] == nodes[k].name) {
nodes[k].checked = true;
          treeObj.updateNode(nodes[k],true);
}
}

补充:设置checked属性之后,一定要更新该节点,否则会出现只有鼠标滑过的时候节点才被选中的情况

    // 获取树对象
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
/** 获取所有树节点 */
var nodes = treeObj.transformToArray(treeObj.getNodes());
// 遍历树节点设置树节点为未选中
for (var k = 0, length_3 = nodes.length; k < length_3; k++) {
nodes[k].checked = false;
treeObj.updateNode(nodes[k],true);
}

查看updateNode方法解释:(也就是更新的时候需要安装自己定义的上级与下级关联关系进行更新)

 js中debugger查看nodes(JS数组):

查看第一个节点:(有好多属性)

效果:

【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态的更多相关文章

  1. jQuery选取所有复选框被选中的值并用Ajax异步提交数据

    昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...

  2. 【php】模板页面展示复选框已选中选项和数据

    写在最开始: 2)我们这里流程是编辑.修改 已经存储的数据. 1.[修改]功能页面: 2.代码:HTML <dt>民宿设施</dt> <dd><label&g ...

  3. ASP.NET从数据库中取出数据,有数据的复选框为选中

    在KS系统中在更新菜单的时候,当查出菜单的时候要查出菜单下面已经有了哪些界面了我用了一下的方法弄的.代码如下: 界面代码: <%@ Page Language="C#" Au ...

  4. easyui复选框树动态加载后台数据,实现自动选中数据库中数据。后台语言是.NET

    最近公司做项目用到了easyui复选框树来实现加载不同类型产品.因为我刚刚毕业,现在也算是实习吧,所以一脸懵逼啊.在公司里的一个哥的帮助下 ,我写出来这个EasyUi复选框树了,虽然东西不难,但也是自 ...

  5. 复选框的全选+全不选+ajax传递复选框的value值+后台接受复选框默认值

    1.html代码 <!--全选框/全不选--> <input type="checkbox" name="all" id="all& ...

  6. 异步ztree 加复选框 及相应后台处理

    异步加载 tree,点一下节点,就发一下请求到后台,然后显示出得到的当前层级节点 <!DOCTYPE html> <html> <head> <meta ch ...

  7. Java获取后台数据,动态生成多行多列复选框

    本例目标: 获取后台数据集合,将集合的某个字段,比如:姓名,以复选框形式显示在HTML页面 应用场景: 获取数据库的人员姓名,将其显示在页面,供多项选择 效果如下: 一.后台 查询数据库,返回List ...

  8. 项目一:项目第二天 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 ...

  9. ztree根据参数动态控制是否显示复选框/单选框(静态JSON数据)

    本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:ztree根据参数动态控制是否显示复选框/单选框(静态JSON数据): 现有全省各地区静态JSON数据,现在想通过Url参数,动态控制是否显 ...

随机推荐

  1. poj2441 Arrange the Bulls

    思路: 状态压缩dp.需要一点优化,否则容易超时. 实现: #include <cstdio> #include <vector> #include <cstring&g ...

  2. ssm框架搭建(下) 简单案例

    前言 这段时间没有更新博客,一直想做一个基于ssm的简单的项目.经过多次的尝试,终于实现了简单的增删查改功能了. 正文 由于前端的技术不是很熟悉,经过多方的查阅,使用了bootstrap的样式,来使界 ...

  3. 无法登录phpmyadmin,报1130错误

    分析过程及解决方案: mysql的1130错误是远程连接的用户无远程权限问题导致.解决方案:在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”loc ...

  4. CortexA7工业级迅为-iMX6UL开发板硬件和资料介绍

    商业级核心板 ARM Cortex-A7架构 主频高达528 MHz 核心板512M DDR内存 8G EMMC 存储 运行温度:-20℃ ~ +80℃ CPU集成电源管理 核心板尺寸仅:42mm*3 ...

  5. day24-2 单例模式

    目录 单例模式 类内部定义静态方法实现单例模式 装饰器实现单例模式 元类实现单例模式 单例模式 单例模式:基于某种方法实例化多次得到实例是同一个 当实例化多次得到的对象中存放的属性都一样的情况,应该将 ...

  6. import downloadjs from 'downloadjs' 如果是自己写的函数 没用默认导出 记得加花括号 例如 import { download } from './data.js'

    import downloadjs from 'downloadjs' 如果是自己写的函数 没用默认导出 记得加花括号 例如 import { download } from './data.js'

  7. vue 数据没有驱动视图?

    Part.1  问题 数据改变,视图却没有根据数据而改变. 原因在于,数据并不在 vue 监听范围之内,vue 只对事先在 data 中声明的变量丶对象等类型数据进行监听 Part.2  例子 < ...

  8. 环球影城母公司:务必阻止复仇者和 X 战警团聚

    今日导读 去年 12 月,迪士尼宣布收购 21 世纪福克斯后,许多漫威粉丝们马上欢呼:复仇者终于可以和 X 战警团聚了!然而,超级英雄大团圆这个美好景象恐怕不会那么容易实现.就在近日,环球影城母公司— ...

  9. ftp上传文件、删除文件、下载文件的操作

    FavFTPUtil.Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

  10. Spring框架 aop操作的注解方法 基于aspectj的自动注解aop方法 抽取相同的value="execution(public void cn.itcast.f_aspect.CRUD.*())"

    首先是在xml配置文件中配置好对象,然后开启aop的注解方法——即<aop:aspectj-autoproxy></aop:aspectj-autoproxy> xml代码如下 ...