• asp.net无限级分类递归实现方法二


    public DataTable GetTable()
            
    {
                DataTable tb 
    = new DataTable();
                tb.Columns.Add(
    "bianhao", Type.GetType("System.String"));
                tb.Columns.Add(
    "name", Type.GetType("System.String"));
                tb.Columns.Add(
    "trainingType", Type.GetType("System.String"));
                
    //Level,指定层级,加入新row时根据其上层row加一
                tb.Columns.Add("Level", Type.GetType("System.Int32"));

                DataRow row;

                DataTable tbs 
    = this.GetClass("");
                
    //先将顶级菜单放入tb
                DataRow[] TopRows = tbs.Select("parentType = 'root'");
                
    for (int i = 0; i < TopRows.Length; i++)
                
    {
                    row 
    = tb.NewRow();

                    row[
    0= TopRows[i]["bianhao"].ToString();
                    row[
    1= TopRows[i]["name"].ToString();
                    row[
    2= TopRows[i]["trainingType"].ToString();
                    row[
    3= 0;//0为第一级 
                    tb.Rows.Add(row);
                }


                DataRow[] rows;
                
    for (int i = 0; i < tb.Rows.Count; i++)//tb.Rows.Count这个数字也是不断的在增大的,因为不断的插入新行
                {
                    
    // tb进行循环
                    string strSpace = "";
                    
    for (int j = 0; j < Convert.ToInt32(tb.Rows[i][3]); j++)
                    
    {
                        
    //循环嵌套对刚才的 这个循环什么作用?wjy905
                        strSpace += "  ";
                    }

                    rows 
    = tbs.Select("parentType=" + "'" + tb.Rows[i]["bianhao"].ToString() + "'");//父类名称为此行的id
                    for (int j = rows.Length - 1; j >= 0; j--)//倒循环,结果可以正序
                    {
                        
    //对刚才的嵌套循环
                        row = tb.NewRow();
                        row[
    0= rows[j]["bianhao"].ToString();
                        row[
    1= strSpace + "--" + rows[j]["name"].ToString();
                        row[
    2= rows[j]["trainingType"].ToString();
                        row[
    3= Convert.ToInt32(tb.Rows[i][3]) + 1;
                        tb.Rows.InsertAt(row, i 
    + 1);
                    }

                }

                
    return tb;
            }
  • 相关阅读:
    Python 实现AEC CBC 加密解密方式
    redis 发布订阅方法与缺陷
    python paramiko 传输下载文件
    Redis 配置文件
    Redis 命令
    window11 | 虚拟机vmWare安装windows11
    十万个为什么 | 文化001-为什么猜灯谜又叫做打灯谜
    ffmpeg | 常用命令使用
    ffmpeg | 常用命令使用
    Adobe系列 | Animate(01)-软件安装
  • 原文地址:https://www.cnblogs.com/wucf2004/p/770040.html
Copyright © 2020-2023  润新知