zoukankan      html  css  js  c++  java
  • 用DataTable 递归生成目录树

    static DataColumn column = new DataColumn();  
      static DataTable table = new DataTable();  
     
        static DataRow MyRow;  
    ublic static DataTable GetCategoryTree(WebInfoBase info)  
      {  
         DataTable dt = info.List(_DefaultDB, "", "[ID],[Title],[ParentID],[ChildNum],[Depth],[OrderNo]", "&version=", "[ID] ASC");  
          
         if (table.Rows.Count > 0)  
         {  
             table.Columns.Clear();  
             table.Rows.Clear();  
         }  
         CreateDataTable();  
         GetTree(dt, "0", 0);  
         return table;  
      }  
        public static void GetTree(DataTable dt, string pid, int blank)  
        {  
            string str = " ";  
            DataView dv = new DataView(dt);  
            dv.RowFilter = "ParentID = " + pid;  
            if (blank > 0)  
            {  
                string s = "";  
                if (blank == 1)  
                {  
                    str = "├";  
                }  
                for (int i = 2; i <= blank; i++)  
                {  
                    s = s + "  |  "+" "+" - ";  
                }  
                str = s + "├";  
            }  
              
            foreach (DataRowView drv in dv)  
            {  
                string id = drv["ID"].ToString();  
                string Title = drv["Title"].ToString();  
                string OrderNo = drv["OrderNo"].ToString();  
                string ParentID = drv["ParentID"].ToString();  
                string Depth = drv["Depth"].ToString();  
                string ChildNum = drv["ChildNum"].ToString();  
                  
                MyRow = table.NewRow();  
                MyRow["ID"] = int.Parse(id);  
                MyRow["Title"] = str + Title;  
                MyRow["OrderNo"] = int.Parse(OrderNo);  
                MyRow["ParentID"] = int.Parse(ParentID);  
                MyRow["Depth"] = int.Parse(Depth);  
                MyRow["ChildNum"] = int.Parse(ChildNum);  
                table.Rows.Add(MyRow);  
     
                int n = int.Parse(Depth);  
                //if (n <= 1)  
                //{  
                    n++;  
                //}  
                GetTree(dt, id, n);  
            }  
        }  
           public static void CreateDataTable()  
        {  
            table.Columns.Clear();  
            column = new DataColumn();  
            column.DataType = System.Type.GetType("System.Int32");  
            column.ColumnName = "ID";  
            table.Columns.Add(column);  
     
            column = new DataColumn();  
            column.DataType = System.Type.GetType("System.Int32");  
            column.ColumnName = "ParentID";  
            table.Columns.Add(column);  
     
            column = new DataColumn();  
            column.DataType = Type.GetType("System.String");  
            column.ColumnName = "Title";  
            table.Columns.Add(column);  
     
            column = new DataColumn();  
            column.DataType = Type.GetType("System.Int32");  
            column.ColumnName = "ChildNum";  
            table.Columns.Add(column);  
     
            column = new DataColumn();  
            column.DataType = Type.GetType("System.Int32");  
            column.ColumnName = "Depth";  
            table.Columns.Add(column);  
     
            column = new DataColumn();  
            column.DataType = Type.GetType("System.Int32");  
            column.ColumnName = "OrderNo";  
            table.Columns.Add(column);  
            //table.Columns.Clear();  
     
        }  

  • 相关阅读:
    google浏览器高清壁纸保存
    vmworkstation安装unbuntu server 网络配置:NAT模式
    python量化交易相关资料
    Oracle VM VirtualBox启动后莫名奇妙的报错
    oracle RAC 跨网段客户端访问 报ORA-12170
    odoo开发 相关知识点
    C#.ToString()格式大全
    flex简单参考实例
    NPOI读写Excel
    C# Stream 和 byte[] 之间的转换(文件流的应用)
  • 原文地址:https://www.cnblogs.com/stulife/p/1969760.html
Copyright © 2011-2022 走看看