`
Herbaceous
  • 浏览: 10818 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类

Spring MVC + Mybatis + zTee 实现一个可增、删、改的无限级树

阅读更多

Spring MVC + Mybatis + zTee 实现一个可增、删、改的无限级树

 

这两天帮老师做了树的增加、删除、修改的功能,查阅了不少资料,在这里分享下一些心得体会。

在这里我选用的是Spring MVC3.2.3 + Mybatis3.2.2 + zTree3.5.14

 

一:数据库的设计

数据库用的是SQLServer 2008(老师让用SQLServer,郁闷.....)

    数据库名:tree,目前就一张表:menuitem

    表很简单目前就三个字段(mid int primary,pid int,name varchar)

    初始一个值为(1,0,‘地块管理’)

 

二:最重要的前台加载tree

(一)tree.jsp    位于WEB-INF/jsp/tree.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>tree.jsp</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/zTreeStyle/zTreeStyle.css">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.ztree.exedit-3.5.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/tree.js"></script>
<style type="text/css">/*设置增加按钮的css样式*/
.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
</style>
</head>
<body>
<ul id="tree" class="ztree"></ul>
</body>
</html>

 

 

(二)最重要的 tree.js    位于js/tree.js

tree.js负责前台到后台的数据的交换

 

下面是tre.js的代码

 

var tree = {
	zTree : null,
	max : null,
	setting : {
		view : {
			selectedMulti : false,
			addHoverDom : function(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='添加' onfocus='this.blur();'></span>";
				sObj.after(addStr);
				var btn = $("#addBtn_"+treeNode.tId);
				if (btn) btn.bind("click", function(){
					var parameter = {
						mid:++tree.max,
						pid:treeNode.mid,
						name:"新节点 " + tree.max
					};
					tree.zTree.addNodes(treeNode, parameter);
					/**
					 * 处理添加节点
					 */
					$.post("menuitem/insert",parameter);
					return false;
				});
			},
			removeHoverDom : function(treeId, treeNode){
				$("#addBtn_"+treeNode.tId).unbind().remove();
			}
		},
		data : {
			simpleData : {
				enable : true,
				idKey : "mid",
				pIdKey : "pid"
			}
		},
		edit : {
			editNameSelectAll : true,
			enable :true,
			removeTitle : "删除",
			renameTitle : "修改",
			drag : {
				autoExpandTrigger : false,
				isMove : false,
				isCopy : false,
				prev : false,
				next : false,
				inner : false
			}
		},
		callback : {
			beforeRename : function(treeId, treeNode, newName, isCancel){
				if(newName.trim().length == 0){
					alert("名称不能为空或空格!");
					return false;
				}
				return window.confirm("确定将 " + treeNode.name + " 修改为 " + newName + " 吗?");
			},
			onRename : function(event, treeId, treeNode, isCancel){
				/**
				 * 处理更改名称
				 */
				var parameter = {
					mid : treeNode.mid,
					name : treeNode.name
				};
				$.post("menuitem/update", parameter);
			},
			beforeRemove : function(treeId, treeNode){
				return window.confirm("确定删除 " + treeNode.name + " 及其所有子节点吗?");
			},
			onRemove : function(event, treeId, treeNode){
				/**
				 * 处理删除节点信息
				 */
				var parameter = {
					mid : treeNode.mid
				};
				$.post("menuitem/deleteById", parameter);
				var nodes = tree.zTree.transformToArray(treeNode.children);
				$.each(nodes,function(index,node){
					var parameter = {
						mid : node.mid
					};
					$.post("menuitem/deleteById", parameter);
				});
			}
		}
	},
	loadTree : function() {
		$.post("menuitem/getAll", null, function(data) {
			tree.zTree = $.fn.zTree.init($("#tree"), tree.setting, data);
		});
		$.post("menuitem/getMax", null, function(data) {
			tree.max = data;
		});
	}
};
$(document).ready(function() {
	tree.loadTree();
});

 

 

就这么多了,最后附上整个项目

 

分享到:
评论
3 楼 qiuyusir 2013-08-23  
Herbaceous 写道
qiuyusir 写道
哥们,你这工程跑不起来啊,页面空白,树出不来

在数据库中添加一条数据就可以了


谢谢,已经搞出来了
2 楼 Herbaceous 2013-08-19  
qiuyusir 写道
哥们,你这工程跑不起来啊,页面空白,树出不来

在数据库中添加一条数据就可以了
1 楼 qiuyusir 2013-08-15  
哥们,你这工程跑不起来啊,页面空白,树出不来

相关推荐

Global site tag (gtag.js) - Google Analytics