下面的代碼是.Net下利用遞歸獲取所有層級(jí)的樹形結(jié)構(gòu),適用于EasyUI tree樹形結(jié)構(gòu)使用

適用.net所有情況,演示代碼是在MVC結(jié)構(gòu)下的,同樣適用于其他結(jié)構(gòu),

代碼注釋比較全,不明白的可以加群詢問


        [HttpPost]
        public JsonResult GetList()
        {
            List<info> list = bll.GetListInfo();//獲取所有父級(jí)(頂級(jí))列表
            List<EasyUiTree> trees = new List<EasyUiTree>();
            if (list != null && list.Count > 0)
            {
                //獲取頂級(jí)節(jié)點(diǎn)和所有子節(jié)點(diǎn)
                foreach (var item in list)
                {
                    //獲取頂級(jí)節(jié)點(diǎn)
                    EasyUiTree easyUiModel = new EasyUiTree();
                    easyUiModel.children = new List<EasyUiTree>();
                    easyUiModel.id = item.Id;
                    easyUiModel.text = item.Name;
                    easyUiModel.state = "open";
                    easyUiModel.ischecked = true;
                    //獲取子節(jié)點(diǎn)
                    var treeInfo = getTree(item.Id);
                    if (treeInfo != null && treeInfo.Count > 0)
                    {
                        easyUiModel.children.AddRange(treeInfo);
                    }
                    trees.Add(easyUiModel);
                }
            }
            return this.Json(trees);
        }

        #region 獲取分級(jí)后的父子數(shù)據(jù)
        /// <summary>
        /// 構(gòu)建easyUI數(shù)據(jù)
        /// </summary>
        public class EasyUiTree
        {
            public string id { get; set; }
            public string text { get; set; }
            /// <summary>
            /// 'open' 或 'closed',默認(rèn)是 'open'
            /// 如果為'closed'的時(shí)候,將不自動(dòng)展開該節(jié)點(diǎn)
            /// </summary>
            public string state { get; set; }
            public bool ischecked { get; set; }
            public object attributes { get; set; }
            public List<EasyUiTree> children { get; set; }
        }

        /// <summary>
        /// 遞歸獲取數(shù)據(jù)
        /// </summary>
        /// <param name="parentId"></param>
        /// <returns></returns>
        public List<EasyUiTree> getTree(string parentId)
        {
            //轉(zhuǎn)換成Easyui數(shù)據(jù)
            List<EasyUiTree> modelList = new List<EasyUiTree>();
            var list = Bll.GetSonList(parentId);//根據(jù)父id,獲取所有子節(jié)點(diǎn)數(shù)據(jù)
            if (list.Count > 0)
            {
                foreach (var item in list)
                {
                    EasyUiTree model = new EasyUiTree();
                    model.children = new List<EasyUiTree>();
                    model.id = item.Id;
                    model.text = item.Name;
                    model.state = "closed";//折疊子節(jié)點(diǎn)
                    model.ischecked = true;
                    //遞歸子節(jié)點(diǎn)
                    var sonTreeInfo = getTree(item.Id);
                    if (sonTreeInfo != null)
                    {
                        model.children.AddRange(sonTreeInfo);
                    }
                    modelList.Add(model);
                }
            }
            return modelList;
        }


        #endregion


原文鏈接:.Net遞歸獲取EasyUI tree樹形結(jié)構(gòu)數(shù)據(jù)