Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    C# - Ordinamento struttura dati - menu e sotto menu

    Ciao
    ho questa struttura dati
    Codice PHP:
        public class MenuItems : List<MenuItem>
        {
        }
        public class 
    MenuItem
        
    {
            
    #region Private members
            
    private string menuItemId string.Empty; 
            private 
    string parentMenuItemId string.Empty; 
            private 
    string description string.Empty; 
            private 
    int order 0
            private 
    MenuItems childMenuItems = new MenuItems(); 

            
    #endregion

            #region Public properties
            
    public string MenuItemId
            
    {
                
    get { return menuItemId; }
                
    set menuItemId value; }
            }
            public 
    string ParentMenuItemId
            
    {
                
    get { return parentMenuItemId; }
                
    set parentMenuItemId value; }
            }
            public 
    string Description
            
    {
                
    get { return description; }
                
    set description value; }
            }
            public 
    int Order
            
    {
                
    get { return order; }
                
    set order value; }
            }
            public 
    MenuItems ChildMenuItems
            
    {
                
    get { return childMenuItems; }
                
    set childMenuItems value; }
            }
            

            
    #endregion
        

    dalla base dati mi ritorna un contenitore non strutturato di MenuItems

    Come nell'esempio da me ricreato
    Codice PHP:
            private MenuItems createMenuItems()
            {
                
    string menuid1 Guid.NewGuid().ToString();
                
    string menuid2 Guid.NewGuid().ToString();
                
    string submenuid1 Guid.NewGuid().ToString();
                
    string submenuid2 Guid.NewGuid().ToString();
                
    MenuItems menuItems = new MenuItems();

                
    MenuItem menuItem = new MenuItem();

                
    #region menu1

                
    menuItem.MenuItemId menuid1;
                
    menuItem.ParentMenuItemId Guid.Empty.ToString();
                
    menuItem.Description "menu1";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid1;
                
    menuItem.ParentMenuItemId submenuid1;
                
    menuItem.Description "menu1-submenu1";
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid1;
                
    menuItem.ParentMenuItemId submenuid2;
                
    menuItem.Description "menu1-submenu2";
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    #endregion

                #region menu2

                
    menuItem.MenuItemId menuid2;
                
    menuItem.ParentMenuItemId Guid.Empty.ToString();
                
    menuItem.Description "menu2";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid2;
                
    menuItem.ParentMenuItemId Guid.NewGuid().ToString();
                
    menuItem.Description "menu2-submenu1";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid2;
                
    menuItem.ParentMenuItemId Guid.NewGuid().ToString();
                
    menuItem.Description "menu2-submenu2";
                
    menuItem.Order 1;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid2;
                
    menuItem.ParentMenuItemId Guid.NewGuid().ToString();
                
    menuItem.Description "menu2-submenu3";
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);
                
    #endregion

                #region submenu1
                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId submenuid1;
                
    menuItem.Description "submenu1-2submenu1";
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId submenuid1;
                
    menuItem.Description "submenu1-2submenu2";
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);
                
    #endregion

                
    return menuItems;
            } 
    quello che sto cercando di fare è una funzione che in automatico mi crea una struttura menu corretta, mettendo sotto i menu genitori i rispettivi figli ed eventualemnte i nipoti dei figli.

    Riuscite ad aiutarmi?

  2. #2
    ho risolto cosi con una funzione ricorsiva


    Codice PHP:
        public partial class Form1 Form
        
    {
            public 
    Form1()
            {
                
    InitializeComponent();
            }

            private 
    void button1_Click(object senderEventArgs e)
            {
                
    MenuItems unsortedMenuItems createMenuItems();

                
    MenuItems menuItems GetMenuItems(unsortedMenuItemsGuid.Empty.ToString());

            }

            private 
    MenuItems GetMenuItems(MenuItems unsortedMenuItemsstring guid)
            {
                
    MenuItems menuItems = new MenuItems();
                foreach(
    MenuItem mi in unsortedMenuItems)
                {
                    if (
    mi.ParentMenuItemId.Equals(guid))
                    {
                        
    menuItems.Add(mi);
                    }
                }
                foreach (
    MenuItem mi in menuItems)
                    
    mi.ChildMenuItems GetMenuItems(unsortedMenuItemsmi.MenuItemId);

                return 
    menuItems;
            }
            private 
    MenuItems createMenuItems()
            {
                
    string menuid1 Guid.NewGuid().ToString();
                
    string menuid2 Guid.NewGuid().ToString();
                
    string submenuid1 Guid.NewGuid().ToString();
                
    string submenuid2 Guid.NewGuid().ToString();
                
    MenuItems menuItems = new MenuItems();

                
    MenuItem menuItem = new MenuItem();

                
    #region menu1

                
    menuItem.MenuItemId menuid1;
                
    menuItem.ParentMenuItemId Guid.Empty.ToString();
                
    menuItem.Description "menu1";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId submenuid1;
                
    menuItem.ParentMenuItemId menuid1;
                
    menuItem.Description "menu1-submenu1";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId submenuid2;
                
    menuItem.ParentMenuItemId menuid1;
                
    menuItem.Description "menu1-submenu2";
                
    menuItem.Order 1;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId submenuid2;
                
    menuItem.Description "menu1-submenu2-sub3";
                
    menuItem.Order 1;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);
                
    #endregion

                #region menu2

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId menuid2;
                
    menuItem.ParentMenuItemId Guid.Empty.ToString();
                
    menuItem.Description "menu2";
                
    menuItem.Order 1;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId menuid2;
                
    menuItem.Description "menu2-submenu1";
                
    menuItem.Order 0;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId menuid2;
                
    menuItem.Description "menu2-submenu2";
                
    menuItem.Order 1;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);

                
    menuItem = new MenuItem();
                
    menuItem.MenuItemId Guid.NewGuid().ToString();
                
    menuItem.ParentMenuItemId menuid2;
                
    menuItem.Description "menu2-submenu3";
                
    menuItem.Order 2;
                
    menuItem.Type MenuType.UNDEFINED;
                
    menuItems.Add(menuItem);
                
    #endregion

                
    return menuItems;
            }
        } 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.