Ztree树详解

xch问题库Ztree树操作

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>问题分类</title>
<meta name="decorator" content="default" />
<%@include file="/WEB-INF/views/include/treeview.jsp"%>
<style type="text/css">
.ztree {
	overflow: auto;
	margin: 0;
	_margin-top: 10px;
	padding: 10px 0 0 10px;
}
.ztree li span.button.add {
	margin-left:2px; 
	margin-right: -1px; 
	background-position:-144px 0; 
	vertical-align:top; 
	*vertical-align:middle
}
.accordion-inner {
	padding: 2px;
}

</style>
<script type="text/javascript">
	$(document).ready(function(){
		$("#tree").height($(window).height()-20);
		$(window).resize(function(){  
	        $("#tree").height($(window).height()-20);  
	    });
		var Nodes =[
			{id:'0', name:"问题分类列表",},
		 <c:forEach items="${questionCatalogTreeData}" var="qct">
			 {id:'${qct.id}',name:"${qct.catalogName}(${qct.orderNum})",pId:"0"},
	     </c:forEach>];
		var setting = {
				data: {
					simpleData: {
						enable: true,
						/**确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array),
						不需要用户再把数据库中取出的 List 强行转换为复杂的 JSON 嵌套格式,默认值:false
						如果设置为 true,请务必设置 setting.data.simpleData 内的其他参数: idKey / pIdKey / rootPId,并且让数据满足父子关系。*/
						idKey:"id",//节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]
						rootPId:"-1"//用于修正根节点父节点数据,即 pIdKey 指定的属性值。[setting.data.simpleData.enable = true 时生效]
					}
				},
				view: {
					selectedMulti: false,//设置是否允许同时选中多个节点。
					addHoverDom: addHoverDom,//用于当鼠标移动到节点上时,显示用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮,请务必与 setting.view.removeHoverDom 同时使用,addHoverDom方法见下文
					removeHoverDom: removeHoverDom,//参数列表(treeId,treeNode)(对应 zTree 的 treeId,便于用户操控,需要显示自定义控件的节点 JSON 数据对象),removeHoverDom方法见下文
					nameIsHTML: true //设置 name 属性是否支持 HTML 脚本 例:var node = {"name":"<font color='red'>test</font>"};
				},
				callback: {	//回调	
					onClick: zTreeOnClick,//用于捕获节点被点击的事件回调函数,zTreeOnClick方法见下文
					beforeRemove: zTreeBeforeRemove,//用于捕获节点被删除之前的事件回调函数,并且根据返回值确定是否允许删除操作,zTreeBeforeRemove方法见下文
					beforeEditName: beforeEditName//用于捕获节点编辑按钮的 click 事件,并且根据返回值确定是否允许进入名称编辑状态,确定将触发自定义的编辑界面操作。beforeEditName方法见下文
				},
				//如不需增删改节点可不需要edit
				/**edit: {
					enable: true,//设置 zTree 是否处于编辑状态,请在初始化之前设置,初始化后需要改变编辑状态请使用 zTreeObj.setEditable() 方法
					editNameSelectAll: true,//节点编辑名称 input 初次显示时,设置 txt 内容是否为全选状态。 [setting.edit.enable = true 时生效]
					showRemoveBtn: showRemoveBtn,
						/**
						设置是否显示删除按钮。[setting.edit.enable = true 时生效]默认值:true,当点击某节点的删除按钮时:
						1、首先触发 setting.callback.beforeRemove 回调函数,用户可判定是否进行删除操作。
						2、如果未设置 beforeRemove 或 beforeRemove 返回 true,则删除节点并触发 setting.callback.onRemove 回调函数。
						*/
					removeTitle: "删除问题分类",//删除按钮的 Title 辅助信息。[setting.edit.enable = true & setting.edit.showRemoveBtn = true 时生效]默认值:"remove"
					showRenameBtn: showRenameBtn,
						/**
						设置是否显示编辑名称按钮。[setting.edit.enable = true 时生效]默认值:true,当点击某节点的编辑名称按钮时:
						1、进入节点编辑名称状态。
						2、编辑名称完毕(Input 失去焦点 或 按下 Enter 键),会触发 setting.callback.beforeRename 回调函数,用户可根据自己的规则判定是否允许修改名称。
						3、如果 beforeRename 返回 false,则继续保持编辑名称状态,直到名称符合规则位置 (按下 ESC 键可取消编辑名称状态,恢复原名称)。
						4、如果未设置 beforeRename 或 beforeRename 返回 true,则结束节点编辑名称状态,更新节点名称,并触发 setting.callback.onRename 回调函数。
						*/
					renameTitle: "修改问题分类",//编辑名称按钮的 Title 辅助信息。[setting.edit.enable = true & setting.edit.showRenameBtn = true 时生效]默认值:"rename"
					drag:{
						isCopy: false,//拖拽时, 设置是否允许复制节点。[setting.edit.enable = true 时生效],默认值:true
						isMove: false//拖拽时, 设置是否允许移动节点。[setting.edit.enable = true 时生效]
					}
				}*/
		  };
		var tree = $.fn.zTree.init($("#tree"), setting, Nodes);
		var treeObj = $.fn.zTree.getZTreeObj("tree");
		var nodes = treeObj.getNodes();
		for(var i=0;i<nodes.length;i++){
			tree.expandNode(nodes[i], true);
		};
	});
	//加载树只需要上面步骤即可
	
	//删除节点
	function zTreeBeforeRemove(treeId, treeNode){
		var url = "${ctx}/wy360/question/catalog/delete?id="+treeNode.id;
		confirmx('确认要删除该问题分类吗?', url);
	};	
	//编辑节点
	function beforeEditName(treeId, treeNode) {
		$(".layui-layer-btn .layui-layer-btn0").css("color","#04131b");
		var url = "${ctx}/wy360/question/catalog/form?id="+treeNode.id;
		var opt = {
			btn: ["关闭"],
			skin:"huang-skin",
			area:['1000px','500px']
		};
		openLayerWindow(url,"问题分类修改",opt);
	};
	//增加节点
	function addHoverDom(treeId, treeNode) {
		if(treeNode.id == "0"){
			var sObj = $("#" + treeNode.tId + "_span");
			if (treeNode.editNameFlag || $("#addBtn_"+treeNode.id).length>0) return;
			var addStr = "<span class='button add' id='addBtn_" + treeNode.id
				+ "' title='添加问题分类' onfocus='this.blur();'></span>";
			sObj.after(addStr);
			var btn = $("#addBtn_"+treeNode.id);
			if (btn) btn.bind("click", function(){
				var url = "${ctx}/wy360/question/catalog/form";
				var opt = {
					btn: ['关闭'],
					skin:"huang-skin",
					area:['1000px','500px']
				};
				openLayerWindow(url, "问题分类添加",opt);
			});
		}
	};
	function removeHoverDom(treeId, treeNode) {
		$("#addBtn_"+treeNode.id).unbind().remove();
	};
	function showRenameBtn(treeId, treeNode) {
		return treeNode.id != "0";
	};
	function showRemoveBtn(treeId, treeNode) {
		return treeNode.id != "0";
	};
	function zTreeOnClick(event, treeId, treeNode){
		if(typeof parent.doQuestionCatalogClick == 'function'){
			parent.doQuestionCatalogClick(treeNode.id,treeNode.name);
		}
	};
	
</script>
</head>
<body>
	<sys:message content="${message}"/>
	<!-- 树形图 -->
	<div class="accordion-body" >
		<div class="accordion-inner">
			<div id="tree" class="ztree" ></div>
		</div>
	</div>
	
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq3892997/article/details/80306489
今日推荐