ZTree树和layui框架整合的demo 获取动态数据实现增删改查(只展现前台部分,后台逻辑自己写)

一、我今天做了一个Ztree树增删改查菜单的功能,在这里记录一下,下次使用时拿过来直接用。

二、首先ztree有特别好的中文 API,目前现在更新到3.5.40版本,大家可以直接去官网下载它的类库(js,css,demo,api),这里我就不提供了。

ztree官网:http://www.treejs.cn/v3/api.php

三、开始操作

1.首先要先引入相关的jquery,ztree中的css,js。(要是用到其他的js,比如这里我用到了layui直接引入即可。)

这几个必须引(当然layui除外。)  还有其他的用到的话 自行引入处理。
<link rel="stylesheet" th:href="@{/ztree_v3/css/demo.css}">
<link rel="stylesheet" th:href="@{/ztree_v3/css/zTreeStyle/zTreeStyle.css}">
<link rel="stylesheet" th:href="@{/layui/css/layui.css}">
<link rel="stylesheet" th:href="@{/layui/css/style.css}">

<script th:src="@{/ztree_v3/js/jquery-1.4.4.min.js}"></script>
<script th:src="@{/ztree_v3/js/jquery.ztree.core.js}"></script>
<script th:src="@{/ztree_v3/js/jquery.ztree.core.js}"></script>
<script th:src="@{/ztree_v3/js/jquery.ztree.exedit.js}"></script>
<script th:src="@{/layui/layui.js}"></script>

2.展示树样式

CSS代码块

<style type="text/css">
    	ul.ztree{
    		width : 320px;
    		height: 420px;
    	}
 </style>
 

HTML 代码块

<div class="layui-row">
		<div id="layer-zTree" >
			    <div style="padding: 10px; height:90%;">
			        <ul id="treeDemo" class="ztree"></ul>
			    </div>
		</div> 
</div>

JS代码块

<script type="text/javascript">
	
	$(function(){
		onLoadZTree();
	});

	/* 树状图 */
	var setting = {
			
			//视图显示样式
			view : {
				  dblClickExpand: false, //双击节点时,是否自动展开父节点的标识 默认true
			      showLine: false,   //设置 zTree 是否显示节点之间的连线。默认true
			      selectedMulti: false, //设置是否允许同时选中多个节点。默认true
			      addHoverDom: addHoverDom, //显示按钮
			      removeHoverDom: removeHoverDom //隐藏按钮
			},
	
	  		//编辑
			edit: {
			      enable: true,   //设置 zTree 是否处于编辑状态 默认false
			      editNameSelectAll: true,  //点击编辑的时候,里面的文本全部选中
			      removeTitle: '删除节点', //删除按钮的名称
			      renameTitle: '重命名' //编辑名称按钮
		    },
		    
		    //采用的数据格式
		    data: {
		        simpleData: {
		          enable: true,  //是否采用简单数据模式 (Array)
		          idKey: "id",   //指定子节点的元素名称
		          pIdKey: "pid",  //指定父节点的元素名称
		          rootPId: 0  //用于修正根节点父节点数据
		        }
		    },
		    
		    //回调函数
		    callback: {
		        beforeRemove: beforeRemove, //点击删除时触发,用来提示用户是否确定删除
		        beforeEditName: beforeEditName, //点击编辑时触发,用来判断该节点是否能编辑,是否进入编辑状态
		        beforeRename: beforeRename, //编辑结束时触发,用来验证输入的数据是否符合要求
		        onRemove : onRemove,   //删除节点后触发,用户后台操作
		        onRename : onRename,   //编辑后触发,用于操作后台
		    }
	};
	
	/* 加载数据 */
	function onLoadZTree(){
		$.ajax({
			async: false,  //是否异步
			cache: false,  //是否使用缓存
			type: 'POST',  //请求方式
			url: '写自己的', //请求地址
			success: function(data) {
				//console.log(data)
				treeNodes = data.data; //把后台封装好的简单的JSON格式赋给treeNodes
			}
		});
		var t = $("#treeDemo");
		t = $.fn.zTree.init(t, setting, treeNodes);  //zTree 初始化方法
		t.expandAll(false);  //展开 / 折叠 全部节点
	}
	
	/* 新增  */
	function addHoverDom(treeId, treeNode) {
		var sObj = $("#" + treeNode.tId + "_span");
		if(treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) return;
		var addStr = "<span class='button add' id='addBtn_" + treeNode.tId +
	      "' title='新增' 'this.blur();'></span>";
	    sObj.after(addStr);
	    var btn = $("#addBtn_" + treeNode.tId);
	    
	    layui.use(['layer', 'form'], function(){
	    	  var layer = layui.layer
	    	  ,form = layui.form;
	    	 
				    if(btn) btn.bind("click", function() {
				        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
				        layer.prompt({
				            formType: 0,
				            value: '',
				            title: '请输入节点名称'
				          }, function (value, index){
				        	  if(value.trim().length === 0) {//非空验证
				                  return false;
				              }
				              if($('#guonp').val()===""){
			                       layer.tips("请正确填写分组信息",$('#guonp'));
			                       return;
			                  }	
				        	  if($('#full_name').val()===""){
			                       layer.tips("请填写部门全称",$('#full_name'));
			                       return;
			                  }		
				        	  layer.close(index)
				              var pid = treeNode.id;
				              var name = value;
				              var grup = $('#guopp input[name="zuzu"]:checked').val()
				              var deptFullName = $('#full_name').val();
				              $.ajax({
				            	  type: "POST",
				                  async: false,
				                  url: "写自己的",
				                  data: {
				                    "pid": pid,
				                    "name": name,
				                    "grup": grup,
				                    "deptFullName": deptFullName
				                  },
				                  success: function(data) {
				                    if(data.code == 10000) {
				                      zTree.addNodes(treeNode, {
				                        pId: treeNode.id,
				                        name: value
				                      });
				                      onLoadZTree() //重新加载,不然再次添加会报错
				                      layer.msg('添加成功', {
				                        icon: 1,
				                        time: 1000
				                      });
				                    } else {
				                      onLoadZTree()
				                      layer.msg('' + data.msg + '', {
				                        icon: 5,
				                        time: 1000
				                      });
				                    }
				                  }
				              });
				              
				         });
				        $(".layui-layer-content").append("<br/><div  id=\"guopp\">集团:<input type=\"radio\" name=\"zuzu\"  value=\"0\" title=\"集团\" />&nbsp;&nbsp;&nbsp;&nbsp;股份:<input type=\"radio\" name=\"zuzu\" value=\"1\" title=\"股份\" checked /></div>")
				        $(".layui-layer-content").append("<br/><input type=\"text\" id= \"full_name\" class=\"layui-input\" placeholder=\"输入部门全称\" />")

				    });
	    }); /* layui */
	}
	
	//移除鼠标隐藏按钮
	function removeHoverDom(treeId, treeNode) {
	    $("#addBtn_" + treeNode.tId).unbind().remove();
	}
	
	/*
     * 编辑
	*/
	function beforeEditName(treeId, treeNode) {
	    return true;
	}
	
	/**
	 * 重命名
	*/
	function beforeRename(treeId, treeNode, newName, isCancel) {
		if(newName.length < 3){
			alert("名称不能少于3个字符!");
			return false;
		}
		return true;
	}
	
	/* 编辑后触发,后台操作 */
	function onRename(event, treeId, treeNode, isCancel){
		var typeId = treeNode.id;
		var typeName = treeNode.name;
		if(confirm("您确认修改类别名称?")){
		        $.post("写自己的",
		                {
		            		"id": typeId,
		           			"name": typeName
		                },
		                function(response){
		                    if(response != null){
		                        if(response.code == 10000){
		                            console.log(response);
		                        } else if(response.code == 10001){
		                        	alert("修改名称失败!");
		                        }
		                    }
		                },
		        'json');
		}
	}

	/* 
	 * 删除
	*/
	function beforeRemove(treeId, treeNode) {
		if(confirm("确认要删除?")){
			if(treeNode.isParent){
				alert("该目录下面还有子目录,请从最底层目录开始删除!")
				return false;
			}
			return true;
		}
		return false;
	}
	
	/* 删除后触发,后台操作  */
	function onRemove(event, treeId, treeNode) {
		var typeId = treeNode.id;
		$.post("写自己的",{"id":typeId},function (reposonse){
			console.log(reposonse);
			if(reposonse.code == 10000){
				onLoadZTree();	//重新加载
			} else{
				alert("删除失败");
			}
		})
	}
	
</script>

============结束=

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值