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 ...
随机推荐
- 004_wireshark专题
一.常用的wireshark搜索语法 (1) http.request.uri contains "admin/activities" #搜索URL包含"admin/ac ...
- Ubuntu 关闭触摸板
1.关闭 sudo modporbe -r psmouse 2.开启 sudo modprobe psmouse
- python 创建类的实例对象
# -*- coding: UTF-8 -*- class Employee: def __init__(self, name, salary): self.name = name self.sala ...
- T-SQL删除存储过程
使用T-SQL脚本删除存储过程 语法: --声明数据库引用use 数据库名称;go --判断是否存在存储过程,如果存在则删除if exists(select * from sys.procedures ...
- VUE 浏览器关闭时清空localStorage
1. 概述 1.1 说明 vue项目中,为了解决页面刷新时vuex数据丢失问题,使用localStorage进行存储对应的vuex数据(判断对应localStorage是否为空,不为空则为vuex中数 ...
- C#操作excel(多种方法比较)
1.用查询表的方式查询并show在数据集控件上. public static string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; D ...
- Confluence 6 升级你的许可证
如果你修改了你的许可证(例如为你的许可证增加了更多的用户),或者从 Cloud 中整合到你本地,你需要更新你的许可证. 希望更新你的额许可证: 进入 > 基本配置(General Config ...
- nginx实践(四)之静态资源web服务(防盗链)
防盗链目的 防止资源被盗用 http_refer 主要是判断refer信息,判断请求来源是不是合法身份 语法 实例 参数说明: none表示允许没有代理的头信息过来,blocked表示refer信息不 ...
- linux 使用的部分命令
搜索所有运行着的线程 ps -A | grep apt-get 你会得到类似下面的输出: root ? Ss : : /bin/sh /usr/lib/apt/apt.systemd.daily _a ...
- Linux系统下inode满了导致无法写文件的解决思路
解决思路1:删除无用的临时文件,释放inode 进入/tmp目录,执行find -exec命令 find /tmp -type f -exec rm {} \; 遍历寻找0字节的文件,并 ...