標籤:
/// <summary> /// 擷取組織圖樹 /// </summary> /// <param name="list"></param> /// <param name="id"></param> /// <param name="treeNodes"></param> /// <returns></returns> static void GetOrganizeSelectTreeNodes(List<BaseOrganizeEntity> list, string id, ref List<SelectTreeNode> treeNodes) { if (list == null) return ; List<BaseOrganizeEntity> sublist; if (!string.IsNullOrWhiteSpace(id)) { sublist = list.Where(t => t.ParentId == id).ToList(); } else { sublist = list.Where(t => string.IsNullOrWhiteSpace(t.ParentId)).ToList(); } if (!sublist.Any()) return; foreach (var item in sublist) { treeNodes.Add(new SelectTreeNode() { id = item.Id, name = item.FullName, parentId = item.ParentId }); GetOrganizeSelectTreeNodes(list, item.Id, ref treeNodes); } }
/// <summary> /// 擷取公司樹 /// </summary> /// <returns></returns> public ActionResult GetOrganizesTree(string id = null, string name = null) { // 使用程式遞迴 MySql用SQL語句遞迴比較暫時不支援,需要用預存程序處理 List<SelectTreeNode> treeNodes = new List<SelectTreeNode>(); GetOrganizeSelectTreeNodes(organizeManager.GetList<BaseOrganizeEntity>(), id, ref treeNodes); var result = new Hashtable { { "treeNodes", treeNodes } }; return Json(result, JsonRequestBehavior.AllowGet); }
C# 遞迴程式 擷取某個節點下的全部子節點