abp (net core) + easyui + efcore implement Warehouse Management System - menu - under (17)

Implement warehouse management system directory

abp (net core) + easyui + efcore implement warehouse management system --ABP general introduction (a)

abp (net core) + easyui + efcore implement Warehouse Management System - Solutions Introduction (b)

abp (net core) + easyui + efcore implement warehouse management system - the domain layer created entity (c)

 abp (net core) + easyui + efcore implement warehouse management system - Define and implement storage (IV)

abp (net core) + easyui + efcore implement Warehouse Management System - Create application services (five)

abp (net core) + easyui + efcore implemented warehouse management system - to achieve the presentation layer of the CRUD controller (vi)

abp (net core) + easyui + efcore implement Warehouse Management System - the presentation layer to achieve CRUD the list view (seven)

abp (net core) + easyui + efcore implement Warehouse Management System - the presentation layer to achieve the CRUD CRUD view (eight)

abp (net core) + easyui + efcore implement Warehouse Management System - the presentation layer to achieve CRUD and test the menu (IX)

abp (net core) + easyui + efcore implement Warehouse Management System - Multilingual (X)

abp (net core) + easyui + efcore implemented Warehouse Management System - WEBAPI implemented CURD (XI)

abp (net core) + easyui + efcore implement Warehouse Management System - menu - on (XVI)

 

Third, the dynamic loading menu

       By abp (net core) + easyui + efcore implement Warehouse Management System - menu - on (xvi) of this article, we have learned about the properties and methods of the class and the class of ABP in the relevant menu, it took us by example to achieve a dynamic load function menu. The menu is dynamic we abp (net core) + easyui + efcore implement warehouse management system - the domain layer created entity (c) to abp (net core) + easyui + efcore implement Warehouse Management System - presentation layer implementation of CRUD CRUD view (VIII) added function module.

     1. In Visual Studio 2017's "Solution Explorer", right-click "ABP.TPLMS.Mvc.Web" project "Startup" folder, the pop-up menu, select "Add">> "class." Name the class DaynaicAddMenu, then select "Add." As shown below.

 

 

      2. Open DaynaicAddMenu.cs file we just created in Visual Studio editor in 2017, write the following code.

 

using Abp.Application.Navigation;
using Abp.Localization;
using ABP.TPLMS.Entitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
 

namespace ABP.TPLMS.Web.Startup
{
    public class DynamicAddMenu
    {
         Modules.IModuleAppService _moduleAppService;
        public DynamicAddMenu(Modules.IModuleAppService moduleApp)

        { _moduleAppService = moduleApp; }
        public  MenuItemDefinition AddMenus()
        {
            #region 动态菜单
           var modules= _moduleAppService.GetAll();
            var project = new MenuItemDefinition(
                    "Business",
                    L("Business"),                  

                    icon: "menu",
                    order: 5
                    );    

            var list = modules.ToList();
            FillMenu(project, 0, list);
            return project;
            #endregion
        }

        // 递归算法
        private  void FillMenu(MenuItemDefinition menu, int ParentId, List<Module> modules)
        {
            List<Module> drs = modules.Where(x=>x.ParentId==ParentId).ToList();
            if (drs == null || drs.Count <=0)
            {
                return;
            }
            else
            {
                for (int i = 0; i < drs.Count; i++)
                {
                    Module dr = drs[i];
                    MenuItemDefinition nodeName = new MenuItemDefinition(
                       dr.Name,
                       L(dr.DisplayName),
                       url: dr.Url,
                       icon: "business",
                       requiredPermissionName: dr.RequiredPermissionName,
                       customData: i
                   );
                    menu.AddItem(nodeName);
                    FillMenu(nodeName, dr.Id, modules);
                }
            }
        }

        private static ILocalizableString L(string name)
        {
            return new LocalizableString(name, TPLMSConsts.LocalizationSourceName);

        }
    }
}

 

 

      3. Open the "Startup" TPLMSNavigationProvider.cs file folder "ABP.TPLMS.Mvc.Web" project in the Visual Studio editor in 2017, writes the code to load the menu. Bold code below.

using Abp.Application.Navigation;
using Abp.Localization;
using ABP.TPLMS.Authorization;
 

namespace ABP.TPLMS.Web.Startup
{

    /// <summary>
    /// This class defines menus for the application.
    /// </summary>
    public class TPLMSNavigationProvider : NavigationProvider
    {
        Modules.IModuleAppService _moduleAppService;
        public TPLMSNavigationProvider(Modules.IModuleAppService moduleApp)
        { _moduleAppService = moduleApp; }

        public override void SetNavigation(INavigationProviderContext context)
        {
            var subMenu = new DynamicAddMenu(_moduleAppService).AddMenus();
            context.Manager.MainMenu
                .AddItem(
                    new MenuItemDefinition(
                        PageNames.Home,
                        L("HomePage"),
                        url: "",
                        icon: "home",
                        requiresAuthentication: true
                    )

                ).AddItem(
                    new MenuItemDefinition(
                        PageNames.Tenants,
                        L("Tenants"),
                        url: "Tenants",
                        icon: "business",
                        requiredPermissionName: PermissionNames.Pages_Tenants

                    )

                ).AddItem(

                    new MenuItemDefinition(
                        PageNames.Users,
                        L("Users"),
                        url: "Users",
                        icon: "people",
                        requiredPermissionName: PermissionNames.Pages_Users

                    )

                ).AddItem(

                    new MenuItemDefinition(
                        PageNames.Roles,
                        L("Roles"),
                        url: "Roles",
                        icon: "local_offer",
                        requiredPermissionName: PermissionNames.Pages_Roles

                    )
                )

                .AddItem(
                    new MenuItemDefinition(
                        PageNames.Module,
                        L("Module"),
                        url: "Module",
                        icon: "local_offer"
                    )
                )

                 .AddItem(
                    new MenuItemDefinition(
                        PageNames.Supplier,
                        L("Supplier"),
                        url: "Supplier",
                        icon: "people"
                    )

                )

                 .AddItem(subMenu
                )

                .AddItem(
                    new MenuItemDefinition(
                        PageNames.About,
                        L("About"),
                        url: "About",
                        icon: "info"
                    )

                ).AddItem( // Menu items below is just for demonstration!

                    new MenuItemDefinition(
                        "MultiLevelMenu",
                        L("MultiLevelMenu"),
                        icon: "menu"
                    ).AddItem(

                        new MenuItemDefinition(
                            "AspNetBoilerplate",
                            new FixedLocalizableString("ASP.NET Boilerplate")

                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetBoilerplateHome",
                                new FixedLocalizableString("Home"),
                                url: "https://aspnetboilerplate.com?ref=abptmpl"
                            )

                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetBoilerplateTemplates",
                                new FixedLocalizableString("Templates"),
                                url: "https://aspnetboilerplate.com/Templates?ref=abptmpl"
                            )

                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetBoilerplateSamples",
                                new FixedLocalizableString("Samples"),
                                url: "https://aspnetboilerplate.com/Samples?ref=abptmpl"

                            )
                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetBoilerplateDocuments",
                                new FixedLocalizableString("Documents"),
                                url: "https://aspnetboilerplate.com/Pages/Documents?ref=abptmpl"

                            )
                        )
                    ).AddItem(
                        new MenuItemDefinition(
                           "AspNetZero",
                            new FixedLocalizableString("ASP.NET Zero")

                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetZeroHome",
                                new FixedLocalizableString("Home"),
                                url: "https://aspnetzero.com?ref=abptmpl"

                            )
                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetZeroDescription",
                                new FixedLocalizableString("Description"),
                                url: "https://aspnetzero.com/?ref=abptmpl#description"

                            )
                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetZeroFeatures",
                                new FixedLocalizableString("Features"),
                                url: "https://aspnetzero.com/?ref=abptmpl#features"

                            )
                        ).AddItem(

                            new MenuItemDefinition(
                                "AspNetZeroPricing",
                                new FixedLocalizableString("Pricing"),
                                url: "https://aspnetzero.com/?ref=abptmpl#pricing"

                            )
                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetZeroFaq",
                                new FixedLocalizableString("Faq"),
                                url: "https://aspnetzero.com/Faq?ref=abptmpl"
                            )
                        ).AddItem(
                            new MenuItemDefinition(
                                "AspNetZeroDocuments",
                                new FixedLocalizableString("Documents"),
                                url: "https://aspnetzero.com/Documents?ref=abptmpl"
                            )
                        )
                    )
                );
        }
        private static ILocalizableString L(string name)
        {
            return new LocalizableString(name, TPLMSConsts.LocalizationSourceName);

        }
    }
}

 

    4. In Visual Studio 2017's "Solution Explorer", find "ABP.TPLMS.Application" project "Modules" directory, open in the editor IModuleAppService.csinterface files. Get the code to add all the modules. code show as below.

   List<Module> GetAll();

    5. In Visual Studio 2017's "Solution Explorer", find "ABP.TPLMS.Application" project "Modules" directory, open in an editor ModuleAppService.csfile. Get the code to add all the modules. code show as below.  

  public List<Module> GetAll()
        {
            var books = _moduleRepository.GetAllList();    

            return books;
        }

     6. The front-end code without any modification. In Visual Studio 2017, press F5 to run the application. After logging in, the following picture.

 

Guess you like

Origin www.cnblogs.com/chillsrc/p/11497266.html