C#之生成樹形菜單數據


public class MenuModel
    {
        /// <summary>
        /// ID
        /// </summary>
        public int ID { get; set; }
        /// <summary>
        /// 菜單名
        /// </summary>
        public string MenuName { get; set; }
        /// <summary>
        /// 父菜單
        /// </summary>
        public int ParentID { get; set; }
    }
 public class TreeModel
    {
        /// <summary>
        /// ID
        /// </summary>
        public string id { get; set; }

        /// <summary>
        /// 節點名稱
        /// </summary>
        public string text { get; set; }
        
        /// <summary>
        /// 是否展開
        /// </summary>
        public string state  { get; set; }

        /// <summary>
        /// 圖標樣式
        /// </summary>
        public string iconCls { get; set; }


        /// <summary>
        /// 子節點集合
        /// </summary>
        public List<TreeModel> children { get; set; }
        
    }
 public List<TreeModel> GetTreeList(int ParentID)
        {
            List<TreeModel> TreeList = new List<TreeModel>();
            List<MenuModel> ModelList = GetChildMenuList(ParentID);
            foreach (var item in ModelList)
            {
                TreeModel m = new TreeModel();
                m.id = item.ID.ToString();
                m.text = item.MenuName.ToString();
                m.children = GetTreeList(item.ID);
                TreeList.Add(m);
            }
            return TreeList;
        }
        /// <summary>
        /// 獲取所有菜單數據
        /// </summary>
        /// <returns></returns>
        public List<MenuModel> GetAllMenuList()
        {
            List<MenuModel> list = new List<MenuModel>();
            list.Add(new MenuModel { ID = 1, MenuName = "菜單1", ParentID = 0 });
            list.Add(new MenuModel { ID = 2, MenuName = "菜單1.1", ParentID = 1 });
            list.Add(new MenuModel { ID = 3, MenuName = "菜單1.1.1", ParentID = 2 });
            list.Add(new MenuModel { ID = 4, MenuName = "菜單2", ParentID = 0 });
            return list;
        }
        /// <summary>
        /// 根據父節點獲取子節點
        /// </summary>
        /// <param name="ParentID"></param>
        /// <returns></returns>
        public List<MenuModel> GetChildMenuList(int ParentID)
        {
            List<MenuModel> list = GetAllMenuList();
            var result =list.Where(x => x.ParentID == ParentID);
            return result.ToList();
        }

 

 

調用:

List<TreeModel> list = GetTreeList(0);
string json = new JavaScriptSerializer().Serialize(list);

 

結果為

[

    {

        "id": "1",

        "text": "菜單1",

        "state": null,

        "iconCls": null,

        "children": [

            {

                "id": "2",

                "text": "菜單1.1",

                "state": null,

                "iconCls": null,

                "children": [

                    {

                        "id": "3",

                        "text": "菜單1.1.1",

                        "state": null,

                        "iconCls": null,

                        "children": []

                    }

                ]

            }

        ]

    },

    {

        "id": "4",

        "text": "菜單2",

        "state": null,

        "iconCls": null,

        "children": []

    }

]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM