下面的代碼是.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ù)