コード例 #1
0
        private void SetFuncChildren(MenuTreeNodeDto pNode, IEnumerable <Sys_Function> funcs,
                                     IEnumerable <Sys_Menu_Function> menuFunc)
        {
            var subMenuFuncs = menuFunc.Where(mf => mf.MenuID == pNode.id).ToList();

            if (subMenuFuncs.Count == 0)
            {
                return;
            }
            var children = new List <MenuTreeNodeDto>();

            pNode.children = children;
            pNode.isLeaf   = false;
            subMenuFuncs.ForEach(mf =>
            {
                var node    = new MenuTreeNodeDto();
                node.id     = mf.FunctionID;
                var func    = funcs.SingleOrDefault(f => f.ID == mf.FunctionID);
                node.label  = func == null ? "" : func.Name;
                node.isLeaf = true;
                node.Number = func == null ? 0 : func.Number ?? 0;
                children.Add(node);
            });
            pNode.children = children.OrderBy(n => n.Number).ToList();
        }
コード例 #2
0
        private void SetNodeChildren(IEnumerable <Sys_Menu> menus, string parentID, MenuTreeNodeDto pNode)
        {
            var subMenus = menus.Where(m => m.ParentID == parentID).ToList();

            if (subMenus.Count > 0)
            {
                var children = new List <MenuTreeNodeDto>();
                pNode.children = children;
                subMenus.ForEach(m => {
                    var node    = new MenuTreeNodeDto();
                    node.id     = m.ID;
                    node.label  = m.Name;
                    node.isLeaf = !m.IsParent ?? true;
                    node.url    = m.Url;
                    children.Add(node);
                    SetNodeChildren(menus, m.ID, node);
                });
            }
        }
コード例 #3
0
        private List <MenuTreeNodeDto> GenMenuTree(IEnumerable <Sys_Menu> menus)
        {
            var nodes = new List <MenuTreeNodeDto>();

            if (menus == null)
            {
                return(nodes);
            }
            var rootsMenu = menus.Where(m => m.ParentID == "0").ToList();

            rootsMenu.ForEach(m => {
                var node    = new MenuTreeNodeDto();
                node.id     = m.ID;
                node.label  = m.Name;
                node.isLeaf = !m.IsParent ?? true;
                node.url    = m.Url;
                nodes.Add(node);
                SetNodeChildren(menus, m.ID, node);
            });
            return(nodes);
        }
コード例 #4
0
 private void SetNodeChecked(MenuTreeNodeDto pNode, IEnumerable <Sys_Role_Menu_Function> authMenuFuncs)
 {
     if (pNode.children != null && pNode.children.Count > 0)
     {
         var isLeaf = pNode.children.Any(x => x.isLeaf);
         if (isLeaf)
         {
             pNode.children.ForEach(subNode =>
             {
                 var count        = authMenuFuncs.Count(x => x.MenuID == pNode.id && x.FunctionID == subNode.id);
                 subNode.@checked = count > 0;
             });
         }
         else
         {
             pNode.children.ForEach(subNode =>
             {
                 SetNodeChecked(subNode, authMenuFuncs);
             });
         }
     }
 }
コード例 #5
0
 private void BuildMenuHtml(StringBuilder sb, MenuTreeNodeDto menu)
 {
     if (menu.children != null && menu.children.Count > 0)
     {
         sb.Append("<dl class=\"layui-nav-child\">");
         menu.children.ForEach(subMenu => {
             sb.Append("<dd>");
             if (subMenu.isLeaf)
             {
                 sb.Append(string.Format("<a href=\"#\" lay-id =\"{0}\" tab-text=\"{1}\">{1}</a>",
                                         subMenu.url, subMenu.label));
             }
             else
             {
                 sb.Append(string.Format("<a href=\"#\">{0}</a>", subMenu.label));
                 BuildMenuHtml(sb, subMenu);
             }
             sb.Append("</dd>");
         });
         sb.Append("</dl>");
     }
 }
コード例 #6
0
        private void SetNodeChildren(IEnumerable <Sys_Menu> menus, IEnumerable <Sys_Function> funcs,
                                     IEnumerable <Sys_Menu_Function> menuFuncs, MenuTreeNodeDto pNode)
        {
            var subMenus = menus.Where(m => m.ParentID == pNode.id).ToList();

            if (subMenus.Count > 0)
            {
                var children = new List <MenuTreeNodeDto>();
                pNode.children = children;
                subMenus.ForEach(m =>
                {
                    var node    = new MenuTreeNodeDto();
                    node.id     = m.ID;
                    node.label  = m.Name;
                    node.isLeaf = !m.IsParent ?? true;
                    children.Add(node);
                    SetNodeChildren(menus, funcs, menuFuncs, node);
                });
            }
            else
            {
                SetFuncChildren(pNode, funcs, menuFuncs);
            }
        }