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;
        }
原文地址:https://www.cnblogs.com/wucf2004/p/770040.html