1.默认第一个节点不能被编辑
//判断等级level等于0的时候 false不显示删除按钮 true显示
//setting设置
edit: {
enable: true,
showRemoveBtn: setRemoveBtn
}
function setRemoveBtn(treeId, treeNode) {
if(treeNode.level == 0) {
return false;
}
else {
return true;
}
}
//ztree
var setting = {
view: {
addHoverDom: addHoverDom,//显示操作图标
removeHoverDom: removeHoverDom,//移除图标
selectedMulti: false,
},
data: {
simpleData: {
enable: true, //true 、 false 分别表示 使用 、 不使用 简单数据模式
idKey: "id", //节点数据中保存唯一标识的属性名称
pIdKey: "parentId", //节点数据中保存其父节点唯一标识的属性名称
rootPId: -1 //用于修正根节点父节点数据,即 pIdKey 指定的属性值
},
key: {
name: "name" //zTree 节点数据保存节点名称的属性名称 默认值:"name"
}
},
edit: {
enable: true,
showRemoveBtn: setRemoveBtn,
showRenameBtn: true,
removeTitle: "删除",
renameTitle: "修改"
},
callback: {
//zTree节点的点击事件
onClick: onClick,
onRename: zTreeOnRename,//修改
onRemove: zTreeOnRemove,//删除
}
};
$(document).ready(function () {
InitialZtree();
showMenu();
});
//显示树
function showMenu() {
var cityObj = $("#citySel");
var cityOffset = $("#citySel").offset();
$("#menuContent").slideDown("fast");
}
//隐藏树
function hideMenu() {
$("#menuContent").fadeOut("fast");
}
//还原zTree的初始数据
function InitialZtree() {
$.ajax({
type: "GET",
dataType: "json",
url: "/xxxx/getMenuTList",
async: false,
success: function (res) {
res = JSON.parse(res);
zTreeObj = $.fn.zTree.init($("#tree"), setting, res); //初始化树
zTreeObj.expandAll(true); //true 节点全部展开、false节点收缩
var nodes = zTreeObj.getNodes();
if (nodes.length > 0) {
zTreeObj.selectNode(nodes[0]);//默认选中第一个节点
$("#citySelid").attr("value", nodes[0].id);
}
}
});
}
//点击
function onClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("tree");
//获得选中的节点
var nodes = zTree.getSelectedNodes(),
v = "",
id = "";
//根据id排序
nodes.sort(function compare(a, b) { return a.id - b.id; });
for (var i = 0, l = nodes.length; i < l; i++) {
if (i !== 0) {
v += "," + nodes[i].name;
id += "," + nodes[i].id;
}
v += nodes[i].name;
id += nodes[i].id;
}
//将选中节点的名称显示在文本框
$("#citySelid").attr("value", id);
Search();
return 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='add node' οnfοcus='this.blur();'></span>";
sObj.after(addStr);
var btn = $("#addBtn_" + treeNode.tId);
if (btn) btn.bind("click", function () {
var zTree = $.fn.zTree.getZTreeObj("tree");
//增加节点的方法
$.ajax({
url: "/xxxx/AddNode",
data: { ParentId: treeNode.id },
type: "post",
success: function (data) {
if (data.message == "success") {
//此方法是js在前段增加节点方法,一定要通过后台返回的id来增加,不然新增的节点会出现节点id为null的问题
zTree.addNodes(treeNode, { id: data.id, ParentId: treeNode.id, name:data.name });
}
else {
layer.alert("新增节点失败!联系管理员!");
}
}
})
return false;
});
};
//删除节点
function zTreeOnRemove(event, treeId, treeNode) {
{
$.ajax({
url: "/xxxxx/DeleteNode",
type: "post",
data: { NodeId: treeNode.id },
success: function (data) {
if (data != "success") {
layer.alert("删除节点失败!");
}
}
})
}
}
f
unction removeHoverDom(treeId, treeNode) {
$("#addBtn_" + treeNode.tId).unbind().remove();
};
//修改节点
function zTreeOnRename(event, treeId, treeNode) {
$.ajax({
url: "/Stand_SystemMaintenance/EditNode",
type: "post",
data: { NodeId: $.trim(treeNode.id), name: treeNode.name },
success: function (data) {
if (data != "success") {
layer.alert("修改节点失败!");
}
}
})
};
后台代码:
/// <summary>
/// 删除树
/// </summary>
/// <param name="NodeId"></param>
/// <returns></returns>
public JsonResult DeleteNode(string NodeId)
{
string sql = "delete from 表 where 体系编号 = " + NodeId + " OR 父节点id = " + NodeId;
var result = sciResService.operateNode(sql);
if (result)
{
return Json("success");
}
else
{
return Json("error");
}
}
/// <summary>
/// 添加树
/// </summary>
/// <param name="ParentId"></param>
/// <returns></returns>
public JsonResult AddNode(string ParentId)
{
string nodeId = sciResService.GetLastNodeSortFormParent(ParentId);//获取到当前父节点下最大的子节点,为新的节点的id
string name = "new node "+nodeId;
string sql = "INSERT INTO 表 (体系编号,节点名称,父节点id) VALUES('" + nodeId + "','" + name + "','" + ParentId + "')";
var result = sciResService.operateNode(sql);
if (result)
{
return Json(new { message = "success", id = nodeId, name = name});
}
else
{
return Json("error");
}
}
/// <summary>
/// 编辑树
/// </summary>
/// <param name="NodeId"></param>
/// <param name="name"></param>
/// <returns></returns>
public JsonResult EditNode(string NodeId, string name)
{
string sql = "UPDATE 表 SET 节点名称='" + name + "' where 体系编号 = " + NodeId;
var result = sciResService.operateNode(sql);
if (result)
{
return Json("success");
}
else
{
return Json("error");
}
}
/// <summary>
/// 获取树的最大节点id
/// </summary>
/// <param name="NodeId"></param>
/// <returns></returns>
public string GetLastNodeSortFormParent(string NodeId)
{
string sql = "select max(体系编号) from 表 where 父节点ID = "+NodeId;
DataTable result = context.ExecuteSql(sql);
string NUM =null;
if (result !=null &&result.Rows.Count>0)
{
NUM = (Convert.ToInt32(result.Rows[0]["max(体系编号)"]) +1).ToString();
}
else
{
NUM = NodeId + "001";
}
return NUM;
}
///获取数
///sql = select 体系编号 as id,父节点id as parentId,节点名称 as name from 表
public JsonResult getMenuTList()
{
DataTable dtn = sciResService.getMenuTList();
JsonSerializerSettings setting = new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
var ret = JsonConvert.SerializeObject(dtn, setting);
var data = dtn.AsEnumerable().ToList();
JsonResult jsontest = Json(dtn, JsonRequestBehavior.AllowGet);
return Json(ret, JsonRequestBehavior.AllowGet);
}