static DataColumn column = new DataColumn(); static DataTable table = new DataTable(); static DataRow MyRow; public 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(); }
用DataTable 递归生成目录树!
最新推荐文章于 2022-02-14 13:39:02 发布