Example #1
0
        /// <summary>
        /// 获取所有数据列表
        /// </summary>
        /// <returns></returns>
        public List <Base_SysNavigationDto> GetMenuTrees()
        {
            var q       = GetIQueryable().OrderBy(c => c.SortNum).ToList();
            var topNav  = q.Where(c => string.IsNullOrEmpty(c.ParentId)).ToList();
            var treeNav = Base_UserBusiness.navigationDtos(q, topNav);
            Base_SysNavigationDto sysnav = new Base_SysNavigationDto
            {
                id       = topNavId,
                label    = "顶级菜单",
                children = treeNav
            };
            var listData = new List <Base_SysNavigationDto>();

            listData.Add(sysnav);
            return(listData);
        }
        /// <summary>
        /// 递归循环出一个菜单树
        /// 无任何值获取,作为静态使用
        /// </summary>
        /// <param name="base_SysNavigationsAll">全部的数据</param>
        /// <param name="base_SysNavigations">只包含顶级的数据</param>
        /// <returns></returns>
        public static List <Base_SysNavigationDto> navigationDtos(List <Base_SysNavigation> base_SysNavigationsAll, List <Base_SysNavigation> base_SysNavigations)
        {
            List <Base_SysNavigationDto> base_SysNavigationDto = new List <Base_SysNavigationDto>();

            foreach (var item in base_SysNavigations)
            {
                //先判断这条数据有没有子级
                var isHaveChilds = base_SysNavigationsAll.Where(c => c.ParentId == item.Id).ToList();
                if (isHaveChilds.Count() > 0)
                {
                    Base_SysNavigationDto sysnav = new Base_SysNavigationDto
                    {
                        id       = item.Id,
                        parentId = item.ParentId,
                        path     = item.Path,
                        title    = item.NavName,
                        icon     = item.Icon,
                        iconSvg  = item.IconSvg,
                        label    = item.NavName
                    };
                    sysnav.children = navigationDtos(base_SysNavigationsAll, isHaveChilds);
                    base_SysNavigationDto.Add(sysnav);
                }
                else
                {
                    Base_SysNavigationDto sysnav = new Base_SysNavigationDto
                    {
                        id       = item.Id,
                        parentId = item.ParentId,
                        path     = item.Path,
                        title    = item.NavName,
                        icon     = item.Icon,
                        iconSvg  = item.IconSvg,
                        label    = item.NavName
                    };
                    base_SysNavigationDto.Add(sysnav);
                }
            }
            return(base_SysNavigationDto);
        }