Ztree 局部刷新功能 (VS2022+Mysql 8.0.22)

百度云代码链接:链接:https://pan.baidu.com/s/1c80z2Yl2luFe5NnMKQI3Zg 
提取码:orhn

希望对大家有用,自己随手写的临时代码,但是(添加修改其实一样)删除功能实现了,没有任何封装,只是记录下Ztree

 在mysql中建game_datacenter数据库,在navicat中执行test_tree.sql,记得修改HomeController中连接字符串的用户名和密码。

具体前台代码实现

删除功能

 function beforeRemove(treeId, treeNode) {
        className = (className === "dark" ? "" : "dark");

        if (treeNode.children != null && treeNode.children.length > 0) {
            alert("请先删除该分类下所有分类")
            return false;
        }
        var r = confirm("确认删除 节点 -- " + treeNode.name + " 吗?")
        if (r == true) {
            $.post("/Home/DeleteTree", { id: treeNode.id, level: treeNode.level + 1 }, function (data) {
                if (data.code == 200) {
                    alert("删除成功!");
                    refreshzTree(treeNode.parentTId);
                } else if (data.code == 300) {
                    alert(data.Message);
                } else {
                    alert("删除失败!" + data.Message);
                }
                //GetTreeList();
            });
        }
    }

//刷新资源树 这里的tid 是父级id
     function refreshzTree(tId) {
        zTreeNodes = [];
        var t = $("#treeDemo");
          $.get("/Home/GetList", {}, function (data) {
            zTreeNodes = data;
            $.fn.zTree.init($("#treeDemo"), setting, zTreeNodes);

        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
        var node = zTree.getNodeByTId(tId);
        zTree.selectNode(node, true);  //选中上级
        zTree.expandNode(node, true, false, false);//展开node一级
        });
    };

 2.后台代码

          1 需要引用

            创建TestTree 和TreeNode

                

 public class TestTree
    {
        /// <summary>
        /// 主键id
        /// </summary>
        public int id { get; set; }

        /// <summary>
        /// 父级主键id
        /// </summary>
        public int pid { get; set; }

        /// <summary>
        /// 对应的名称
        /// </summary>
        public string name { get; set; }


        /// <summary>
        /// 第几级
        /// </summary>
        public int level { get; set; }


    }

            

public class TreeNode
    {
        /// <summary>
        /// 子id
        /// </summary>
        public int id { get; set; }

        /// <summary>
        /// 父id
        /// </summary>
        public int parentTId { get; set; }

        /// <summary>
        /// 名称
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 深度 从0开始
        /// </summary>
        public int levelnumber { get; set; }


        public string bh { get; set; }


        public bool open { get; set; }

        public bool check { get; set; }

        /// <summary>
        /// 子节点
        /// </summary>
        public List<TreeNode> children { get; set; }

        /// <summary>
        /// 无参构造函数
        /// </summary>
        public TreeNode()
        {
            children = new List<TreeNode>();
        }

        /// <summary>
        /// 有参构造函数
        /// </summary>
        /// <param name="id">子id</param>
        /// <param name="name">名称</param>
        /// <param name="parentId">父id</param>
        public TreeNode(int id, string name, int parentId, int level, string bh)
        {
            this.id = id;
            this.name = name;
            this.parentTId = parentId;
            this.levelnumber = level;
            this.bh = bh;
            children = new List<TreeNode>();
        }

        /// <summary>
        /// 有参构造函数
        /// </summary>
        /// <param name="id">子id</param>
        /// <param name="name">名称</param>
        /// <param name="parent">父节点</param>
        public TreeNode(int id, string name, TreeNode parent, int level, string bh)
        {
            this.id = id;
            this.name = name;
            this.parentTId = parent.id;
            this.levelnumber = level;
            this.bh = bh;
            children = new List<TreeNode>();
        }
    }

        获取列表的方法

 public JsonResult GetList()
        {
            List<TestTree> result = new List<TestTree>();

            using (var Conn = new MySqlConnection(ConnString))
            {
                var data = Conn.Query<TestTree>("select * from test_tree"); //查询数据
                result = data.ToList();
            }
            List<TreeNode> resps = new List<TreeNode>();

            var dataList = BulidTreeByRecursive(result, resps, 0);
            return new JsonResult(dataList);
        }

                 删除方法:

 public JsonResult DeleteTree(int id)
        {
            try
            {
                using (var Conn = new MySqlConnection(ConnString))
                {
                    string sql = "delete from test_tree where id=@id";
                    var res = Conn.Execute(sql, new { id });
                    if (res > 0)
                    {
                        return new JsonResult(new { code = 200 });
                    }
                }
            }
            catch (Exception ex)
            {
                return new JsonResult(new { code = 500 });
            }
            
            return new JsonResult(new { code = 300 });
        }

                使用递归方法建树

 /// <summary>
        /// 使用递归方法建树
        /// </summary>
        public List<TreeNode> BulidTreeByRecursive(List<TestTree> treeNodes, List<TreeNode> resps, int pID)
        {
            resps = new List<TreeNode>();
            List<TestTree> tempList = new List<TestTree>();
            if (pID == 0)
            {
                tempList = treeNodes.Where(c => c.level == 1).ToList();
            }
            else
            {
                tempList = treeNodes.Where(c => c.pid == pID).ToList();
            }

            if (tempList == null && tempList.Count() == 0)
            {
                return null;
            }

            for (int i = 0; i < tempList.Count; i++)
            {
                TreeNode node = new TreeNode();

                node.id = tempList[i].id;
                node.parentTId = tempList[i].pid;
                node.name = tempList[i].name;
                node.levelnumber = tempList[i].level;
                //if (tempList[i].ISCHECKED == 1)
                //{
                //    node.check = true;
                //    node.open = true;
                //}
                node.children = BulidTreeByRecursive(treeNodes, resps, node.id);
                resps.Add(node);
            }
            return resps;
        }

删除之后,会自动选择父节点,并且刷新父节点下的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值