/// <summary> /// 加载Json树节点 /// </summary> /// <param name="treeEntitys">TreeEntity的集合</param> /// <param name="isexpand">各节点是否展开</param> /// <returns></returns> protected JsonResult JsonForWdTree(IList <TreeEntity> treeEntitys, bool isexpand = false) { IList <WdTreePermission> permissions = null; if (treeEntitys == null || treeEntitys.Count <= 0) { permissions = new List <WdTreePermission>(); return(Json(permissions, JsonRequestBehavior.AllowGet)); } //判断有多少个模块 IList <TreeEntity> roots = treeEntitys.Where(f => f.pId.ToString() == Guid.Empty.ToString()).ToList(); if (roots.Count <= 0) { permissions = new List <WdTreePermission>(); return(Json(permissions, JsonRequestBehavior.AllowGet)); } //总模块 permissions = new List <WdTreePermission>(roots.Count); foreach (var root in roots) { permissions.Add(new WdTreePermission { id = Guid.Parse(root.id.ToString()), icon = root.icon, name = root.name }); } //便利子模块 foreach (var permission in permissions) { //判断有多少个模块 IList <TreeEntity> perRoots = treeEntitys.Where(f => f.pId.ToString() == permission.id.ToString()).ToList(); IList <WdTreeEntity> trees = new List <WdTreeEntity>(); WdTreeEntity tree = null; foreach (var treeEntity in perRoots) { tree = new WdTreeEntity(treeEntity); tree.url = string.IsNullOrEmpty(tree.url) ? "" : tree.url; tree.ChildNodes = GetWdChildNodes(ref treeEntitys, isexpand, treeEntity); trees.Add(tree); } permission.tree = trees; tree = null; } return(Json(permissions, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 根据当前节点,加载子节点 /// </summary> /// <param name="treeEntitys">TreeEntity的集合</param> /// <param name="isexpand">各节点是否展开</param> /// <param name="currTreeEntity">当前节点</param> private IList <WdTreeEntity> GetWdChildNodes(ref IList <TreeEntity> treeEntitys, bool isexpand, TreeEntity currTreeEntity) { IList <TreeEntity> childNodes = treeEntitys.Where(f => f.pId.ToString() == currTreeEntity.id.ToString()).ToList(); if (childNodes.Count <= 0) { return(null); } IList <WdTreeEntity> childTrees = new List <WdTreeEntity>(childNodes.Count); WdTreeEntity tree = null; foreach (var treeEntity in childNodes) { tree = new WdTreeEntity(treeEntity); tree.url = string.IsNullOrEmpty(tree.url) ? "" : tree.url; tree.isexpand = isexpand; tree.ChildNodes = GetWdChildNodes(ref treeEntitys, isexpand, treeEntity); childTrees.Add(tree); } return(childTrees); }