private MenuLinkItem GenerateSubMenuModel(IEnumerable <MenuLinkItem> items, MenuLinkItem item) { item.ChildItems = items.Where(c => c.ParentId == item.Id && (!c.Roles.Any() || c.Roles.Any(r => _userService.CurrentUserRole == r))).OrderBy(c => c.Order) .ToArray(); foreach (var topMenuItem in item.ChildItems) { topMenuItem.ChildItems = items.Where(c => c.ParentId == topMenuItem.Id && (!c.Roles.Any() || c.Roles.Any(r => _userService.CurrentUserRole == r))) .Select(t => GenerateSubMenuModel(items, t)).Where(t => t != null).ToArray(); } return(item); }
/* * Menu Categories */ private void PopulateCategorieList(List <MenuCategorie> menuCategorieList) { flowLayoutPanelMenuCategorie.Controls.Clear(); foreach (MenuCategorie categorie in menuCategorieList) { MenuLinkItem menuLink = new MenuLinkItem(categorie.CategorieName); menuLink.MenuLinkItemClick += (sender, EventArgs) => { MenuCategorieLinkItem_Click(categorie.MenuItems); // Set the active state to true, so we can change the styling menuLink.SetActiveState = true; }; flowLayoutPanelMenuCategorie.Controls.Add(menuLink); } }
/* * Menu Main */ private void PopulateMenu() { if (flowLayoutPanelMenu.Controls.Count == 0) { Menu_Service menu_service = new Menu_Service(); // Get all menu items from the database List <MainMenu> menuList = menu_service.GetFullMenu(); foreach (MainMenu menu in menuList) { // Create a custom usercontrol with the data from the 'Drinks, Dinner, and Lunch' menu, for the windows forms app. MenuLinkItem menuLink = new MenuLinkItem(menu.MenuName); // Add a custom eventHandler to show the categories corresponding with the clicked menu menuLink.MenuLinkItemClick += (sender, EventArgs) => { MenuLinkItem_Click(menu.MenuCategories); lbl_ActiveMenu.Text = menu.MenuName + " Menu"; }; flowLayoutPanelMenu.Controls.Add(menuLink); } } }