zoukankan      html  css  js  c++  java
  • 通过循环实现树状菜单

    1、数据结构

     public class Data
        {
            public string ID { get; set; }
            public string Name { get; set; }
    
            public string ParentId { get; set; }
    
            public List<Data> ChildData { get; set; }
        }

    2、模拟数据

      List<Data> list = new List<Data> { new Data {
                    ID="1",
                    Name="name1",
                    ParentId="0",
    
                } ,
                new Data {
                    ID="2",
                    Name="name2",
                    ParentId="0",
    
                } ,
                new Data {
                    ID="3",
                    Name="name3",
                    ParentId="1",
    
                } ,
                new Data {
                    ID="4",
                    Name="name4",
                    ParentId="1",
    
                } ,
                new Data {
                    ID="5",
                    Name="name5",
                    ParentId="2",
    
                } ,
                new Data {
                    ID="6",
                    Name="name6",
                    ParentId="4",
    
                },    
                   new Data {
                    ID="7",
                    Name="name7",
                    ParentId="6",
                 }
                };

    4、对数据进行排序,目的是先加载父节点。 

       var listData = list.OrderBy(o => o.ParentId).ToList();

    5、定义结果集合

      List<Data> resList = new List<Data>();

    6、for 循环遍历 或者foreach 遍历排序好的数据,生成树结构菜单

             foreach (var item in listData)
                {
                    if (item.ParentId == "0")
                    {
                        resList.Add(item);
                    }
                    else
                    {
                        //这个地方是 最难理解得地方,我一直在想如何找他们得父节点,就是想通过一层一层去找,这种想法就是错的,
                        //正确得做法是只要让子节点加载到父节点,就可以了;
                        var parent = listData.Where(x => x.ID == item.ParentId).FirstOrDefault();
                        if (parent.ChildData == null)
                        {
                            parent.ChildData = new List<Data>();W
                        }
                        parent.ChildData.Add(item);
                    }
                }

    7、序列化成json

      var resJson = Newtonsoft.Json.JsonConvert.SerializeObject(resList);

      

  • 相关阅读:
    C#随机数字生成的一种方法
    SqlServer2012自增主键跳跃增长的问题解决方案
    Mysql5.7初始化成空密码或随机密码的方式
    StyleCop的常见错误
    数据库同步相关的SQL语句
    Linux Shell角本中的条件判断
    Linux(CentOS)中使用Mono+jexus部署Asp.net4.5网站
    Mina.Net实现的UDP多路广播
    Linux CentOS 6.6安装JDK1.7
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/12632774.html
Copyright © 2011-2022 走看看