zTree实战
1.实体
public class UserDataZTreeVo { private String id;
private String pid;
private String name;
private boolean open;
private String readWriteAuthority;
private String code;
private String description;
private boolean isParent; private boolean checked; //ztree组件需要格式
public String getpId() {
return this.pid == null ? "" : this.pid;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} public String getPid() {
return pid;
} public void setPid(String pid) {
this.pid = pid;
} public boolean isParent() {
return isParent;
} public void setParent(boolean parent) {
isParent = parent;
} public boolean isOpen() {
return open;
} public void setOpen(boolean open) {
this.open = open;
} public String getReadWriteAuthority() {
return readWriteAuthority;
} public void setReadWriteAuthority(String readWriteAuthority) {
this.readWriteAuthority = readWriteAuthority;
} public boolean isChecked() {
return checked;
} public void setChecked(boolean checked) {
this.checked = checked;
}
}
2.zTree封装
//ztree封装,先创建组织
List<UserDataZTreeVo> list = new ArrayList<UserDataZTreeVo>();
String organizationTreeId = "";
for (int i = ; i < listUserDataVo.size(); i++) {
UserDataZTreeVo ztree = new UserDataZTreeVo();
UserDataManageVO vo = listUserDataVo.get(i);
if (!organizationTreeId.equals(String.valueOf(vo.getManagedOrganizationId()))) {
ztree.setId(String.valueOf(vo.getManagedOrganizationId()));
ztree.setPid(String.valueOf(vo.getManagedOrganizationId()));
ztree.setName(vo.getManagedOrganizationName());
ztree.setOpen(true);
ztree.setParent(true);
organizationTreeId = String.valueOf(vo.getManagedOrganizationId());
list.add(ztree);
}
}
3.加载
//========================================3.ztree===========================================
var zNodes = [];
var initUserManageTree = function (userId, organizationId) {
$.ajax({
url: CTX + "/manage/loadUserManagedTree",//发送ajax请求加载权限数据
type: 'post',
dataType: 'json',
async: false,
data: {
"userId": userId,
"organizationId": organizationId
},
success: function (data) {//data就是服务端返回的权限数据
var data = data.data;
zNodes = data;
},
error: function (msg) {
alert('树加载异常!');
}
});
}; var InitialTree = function () {
// 授权树初始化
var setting = {
view: {
selectedMulti: true,
showLine: true,
addDiyDom: addDiyDom
},
data: {
key: {
name: "name"
},
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid",
rootPId: null
}
},
check: {//使用ztree选中效果
enable: true,
}
};
$.fn.zTree.init($("#userDataManageTree"), setting, zNodes).expandAll(true);
};
var addDiyDom = function (treeId, treeNode) {
var pNode = treeNode.getParentNode();
var readWriteAuthority = treeNode.readWriteAuthority;
var aObj = $("#" + treeNode.tId + "_a");
if (pNode) {
var editStr = "";
if (readWriteAuthority == "1") {
editStr += "<label class='isRead'>"
+ "<input class='a-radio' id='writeRead" + treeNode.id + "' value='1' type='radio' name='writeRead" + treeNode.id + "' checked/>"
+ "<span class='b-radio'></span>只读</label>";
editStr += "<label class='isRead'>"
+ "<input id='writeRead" + treeNode.id + "' class='a-radio' value='2' type='radio' name='writeRead" + treeNode.id + "' />"
+ "<span class='b-radio'></span>读写</label>";
} else {
editStr += "<label class='isRead'>"
+ "<input class='a-radio' id='writeRead" + treeNode.id + "' value='1' type='radio' name='writeRead" + treeNode.id + "' />"
+ "<span class='b-radio'></span>只读</label>";
editStr += "<label class='isRead'>"
+ "<input id='writeRead" + treeNode.id + "' class='a-radio' value='2' type='radio' name='writeRead" + treeNode.id + "' checked />"
+ "<span class='b-radio'></span>读写</label>";
}
aObj.append(editStr);
}
}; var hiddenNodes = [];
var autoMatch = function (txtObj) {
// 授权树初始化
var setting = {
view: {
selectedMulti: true,
showLine: true,
addDiyDom: addDiyDom
},
data: {
key: {
name: "name"
},
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid",
rootPId: null
}
},
check: {
enable: true
}
}; var searchUserTree = $('#searchUserTree').val();
if (searchUserTree) {
InitialTree();
var zTree = $.fn.zTree.getZTreeObj("userDataManageTree");
var nodeList = zTree.getNodesByParamFuzzy("name", searchUserTree);
//parent
hiddenNodes = zTree.transformToArray(nodeList);
for (var n in hiddenNodes) {
findParent(zTree, hiddenNodes[n]);
}
$.fn.zTree.destroy("userDataManageTree");
$.fn.zTree.init($("#userDataManageTree"), setting, hiddenNodes).expandAll(true);
} else {
InitialTree();
}
}; function findParent(treeObj, node) {
var pNode = node.getParentNode();//获取父节点
if (pNode != null && hiddenNodes.indexOf(pNode) == -1) {
hiddenNodes.push(pNode);
treeObj.removeChildNodes(pNode);
}
}
zTree实战的更多相关文章
- [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表
写在前面 本篇文章将实现,其他文件类型的列表. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF ...
- [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表
写在前面 本篇文章将实现应用列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘 ...
- [实战]MVC5+EF6+MySql企业网盘实战(26)——音乐列表
写在前面 本篇文章将实现,音乐列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ...
- [实战]MVC5+EF6+MySql企业网盘实战(25)——种子列表
写在前面 上篇文章实现了视频列表,本篇文章继续实现其他的文件列表.功能相似.这里就不再赘述. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ...
- [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表
写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...
- [实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
写在前面 上篇文章实现了图片列表,这篇文章实现文档列表将轻车熟路,因为逻辑基本相似,只是查询条件的不同.这里将txt,doc,docx,ppt,pptx,xls,xlsx的文件都归为文档列表中. 系列 ...
- [实战]MVC5+EF6+MySql企业网盘实战(22)——图片列表
写在前面 实现逻辑是:单击图片节点,加载所有的当前用户之前上传的图片,分页,按时间倒序加载. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ...
- [实战]MVC5+EF6+MySql企业网盘实战(21)——网盘操作日志
写在前面 上篇文章介绍了一个bootstrap的分页插件,这篇将弄一个完整的例子,就以日志分页为例说明如何请求服务端然后进行分页. 系列文章 [EF]vs15+ef6+mysql code first ...
- [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator
写在前面 考虑到数据量的问题,特引入bootstrap的分页插件.插件下载地址:https://github.com/lyonlai/bootstrap-paginator 系列文章 [EF]vs15 ...
随机推荐
- $Django 表设计,登陆图片验证
pip3 install pillow #PIL登陆图片验证(未实现局部刷新)详细:https://www.cnblogs.com/qiangyuge/p/8025168.htmldef get_co ...
- SQL Server统计数据库中表个数、视图个数、存储过程个数
表个数 SELECT count(*) FROM sys.objects WHERE type='U' 视图个数 SELECT count(*) FROM sys.objects WHERE type ...
- VI和VIM
linux下vi.VIM命令大全 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + file ...
- 彻底搞懂字符集编码:ASCII,Unicode 和 UTF-8
一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个 ...
- CodeCraft-19 and Codeforces Round #537 (Div. 2) 题解
传送门 D. Destroy the Colony 首先明确题意:除了规定的两种(或一种)字母要在同侧以外,其他字母也必须在同侧. 发现当每种字母在左/右边确定之后,方案数就确定了,就是分组的方案数乘 ...
- Idea-Java接入银联支付的Demo
注:本文来源于:< Idea-Java接入银联支付的Demo > 接入银联支付的Demo,希望能给大家节约一点时间 https://github.com/wangfei0904306/un ...
- Oracle12c Release1 安装图解(详解)
Oracle12c Release1 安装图解(详解) Oracle12c 终于发布了,代号为 c,即为 Cloud(云),替代了网格 (Grid)运算. 我的机器基础环境:Windows8(x64) ...
- linux 批量进行:解压缩某一类压缩文件类型的文件
1: 编写脚本 [oracle@oracle oracle]$ vim unzip.sh ziphome=/u01/app/oracle ziplist=`du -a $ziphome |grep ' ...
- 配置 Confluence 6 安全的最佳实践
让一个系统能够变得更加坚固的最好办法是将系统独立出来.请参考你公司的安全管理策略和相关人员来找到你公司应该采用何种安全策略.这里有很多事情需要我们考虑,例如考虑如何安装我们的操作系统,应用服务器,数据 ...
- Confluence 6 用户目录图例 - 使用 LDAP 授权,在用户第一次登陆时拷贝用户
上面的图:Confluence 连接到一个 LDAP 目录只用作授权,当用户登录 Confluence 的时候,使用 LDAP 授权并且将用户信息同步到本地路服务器上. https://www.cwi ...