我以前的项目中写过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();   
  
    }   
   
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/01/21/3846843.aspx