下面的代码是.Net下利用递归获取所有层级的树形结构,适用于EasyUI tree树形结构使用

适用.net所有情况,演示代码是在MVC结构下的,同样适用于其他结构,

代码注释比较全,不明白的可以加群询问


01[HttpPost]
02public JsonResult GetList()
03{
04    List<info> list = bll.GetListInfo();//获取所有父级(顶级)列表
05    List<EasyUiTree> trees = new List<EasyUiTree>();
06    if (list != null && list.Count > 0)
07    {
08        //获取顶级节点和所有子节点
09        foreach (var item in list)
10        {
11            //获取顶级节点
12            EasyUiTree easyUiModel = new EasyUiTree();
13            easyUiModel.children = new List<EasyUiTree>();
14            easyUiModel.id = item.Id;
15            easyUiModel.text = item.Name;
16            easyUiModel.state = "open";
17            easyUiModel.ischecked = true;
18            //获取子节点
19            var treeInfo = getTree(item.Id);
20            if (treeInfo != null && treeInfo.Count > 0)
21            {
22                easyUiModel.children.AddRange(treeInfo);
23            }
24            trees.Add(easyUiModel);
25        }
26    }
27    return this.Json(trees);
28}
29 
30#region 获取分级后的父子数据
31/// <summary>
32/// 构建easyUI数据
33/// </summary>
34public class EasyUiTree
35{
36    public string id { get; set; }
37    public string text { get; set; }
38    /// <summary>
39    /// 'open' 或 'closed',默认是 'open'
40    /// 如果为'closed'的时候,将不自动展开该节点
41    /// </summary>
42    public string state { get; set; }
43    public bool ischecked { get; set; }
44    public object attributes { get; set; }
45    public List<EasyUiTree> children { get; set; }
46}
47 
48/// <summary>
49/// 递归获取数据
50/// </summary>
51/// <param name="parentId"></param>
52/// <returns></returns>
53public List<EasyUiTree> getTree(string parentId)
54{
55    //转换成Easyui数据
56    List<EasyUiTree> modelList = new List<EasyUiTree>();
57    var list = Bll.GetSonList(parentId);//根据父id,获取所有子节点数据
58    if (list.Count > 0)
59    {
60        foreach (var item in list)
61        {
62            EasyUiTree model = new EasyUiTree();
63            model.children = new List<EasyUiTree>();
64            model.id = item.Id;
65            model.text = item.Name;
66            model.state = "closed";//折叠子节点
67            model.ischecked = true;
68            //递归子节点
69            var sonTreeInfo = getTree(item.Id);
70            if (sonTreeInfo != null)
71            {
72                model.children.AddRange(sonTreeInfo);
73            }
74            modelList.Add(model);
75        }
76    }
77    return modelList;
78}
79 
80 
81#endregion


原文链接:.Net递归获取EasyUI tree树形结构数据