使用ztree的一些方法

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);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值