百度云代码链接:链接: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;
}
删除之后,会自动选择父节点,并且刷新父节点下的数据