public static DataTable GetCategoryTree(WebInfoBase info) { DataTable dt = info.List(_DefaultDB, "", "[ID],[Title],[ParentID],[ChildNum],[Depth],[OrderNo]", "&version=", "[ID] ASC"); dt.Columns.Add("Path", typeof(string)); int RCount = dt.Rows.Count; ArrayList MyArray=new ArrayList(); int Sum = RCount; int Counts = 0; //第一级分类数量 int FDepth = -1; foreach (DataRow dr in dt.Rows) { //生成路径序列 //先写总分类 RCount = RCount - 1; int Depth = Convert.ToInt32(dr["Depth"]); if (Depth == 0) { //dr["Title"] ="┌ "+" "+ dr["Title"].ToString(); dr["Path"] = "0" + "." + dr["ID"].ToString(); //根 } else if (Depth > 0) { //二级分类的下面子分类的数量 DataRow drParent = dt.Select("ID=" + dr["ParentID"].ToString())[0]; dr["Path"] = drParent["Path"].ToString() + "." + dr["ID"].ToString(); if (Depth == 1) { FDepth = FDepth + 1; int ID = Convert.ToInt32(dr["ID"]); //第一级分类下的子目录数量 int Childs = 0; if (Sum > 0) { for (int i = 0; i < Sum; i++) { if (dt.Rows[i][2].ToString() == ID.ToString()) { Childs = Convert.ToInt32(dt.Rows[i][0].ToString()); } } } MyArray.Insert(FDepth, Childs); dr["Title"] = " ┌ " + "— " + dr["Title"].ToString() +" "+ "(父类)"; } else if (Depth == 2) { for (int i = 0; i < MyArray.Count; i++) { if (dr["ID"].ToString() == MyArray[i].ToString()) { string code = " ├ " + "—" + " —"; string Title = dr["Title"].ToString(); if (Title.StartsWith(code) == false) { dr["Title"] = "└ " + "—" + " —" + dr["Title"].ToString(); } else { dr["Title"] = "└ " + "—" + " —" + Title.Substring(8, Title.Length - 8); } break; } else { string code = " ├ " + "—" + " —"; int Sublengh = code.Length; string Title = dr["Title"].ToString(); if (Title.StartsWith(code) == false) { dr["Title"] = " ├ " + "—" + " —" + dr["Title"].ToString(); } else { dr["Title"] = dr["Title"].ToString(); } } } } } } return dt; }