首页 > 代码库 > 递归方式实现树的展示形式
递归方式实现树的展示形式
1.模拟出数据
1 private DataTable CreateDataTable() 2 { 3 DataTable table = new DataTable(); 4 DataColumn column1 = new DataColumn("Id", typeof(string)); 5 DataColumn column2 = new DataColumn("Text", typeof(String)); 6 DataColumn column3 = new DataColumn("ParentId", typeof(string)); 7 table.Columns.Add(column1); 8 table.Columns.Add(column2); 9 table.Columns.Add(column3);10 11 DataRow row = table.NewRow();12 row[0] = "china";13 row[1] = "中国";14 row[2] = DBNull.Value;15 table.Rows.Add(row);16 17 row = table.NewRow();18 row[0] = "henan";19 row[1] = "河南省";20 row[2] = "china";21 table.Rows.Add(row);22 23 row = table.NewRow();24 row[0] = "zhumadian";25 row[1] = "驻马店市";26 row[2] = "henan";27 table.Rows.Add(row);28 29 row = table.NewRow();30 row[0] = "luohe";31 row[1] = "漯河市";32 row[2] = "henan";33 table.Rows.Add(row);34 35 row = table.NewRow();36 row[0] = "anhui";37 row[1] = "安徽省";38 row[2] = "china";39 table.Rows.Add(row);40 41 row = table.NewRow();42 row[0] = "hefei";43 row[1] = "合肥市";44 row[2] = "anhui";45 table.Rows.Add(row);46 47 row = table.NewRow();48 row[0] = "golden";49 row[1] = "金色池塘小区";50 row[2] = "hefei";51 table.Rows.Add(row);52 53 row = table.NewRow();54 row[0] = "ustc";55 row[1] = "中国科学技术大学";56 row[2] = "hefei";57 table.Rows.Add(row);58 59 return table;60 }
2.添加树的数据
1 private void LoadData() 2 { 3 // 模拟从数据库返回数据表 4 DataTable table = CreateDataTable(); 5 DataSet ds = new DataSet(); 6 ds.Tables.Add(table); 7 ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]); 8 9 foreach (DataRow row in ds.Tables[0].Rows)10 {11 if (row.IsNull("ParentId"))12 {13 TreeNode node = new TreeNode();14 node.Text = row["Text"].ToString();15 node.Expanded = true;16 tree.Nodes.Add(node);17 ResolveSubTree(row, node);18 }19 }20 }
3.递归实现无限极添加
1 private void ResolveSubTree(DataRow dataRow, TreeNode treeNode) 2 { 3 DataRow[] rows = dataRow.GetChildRows("TreeRelation"); 4 if (rows.Length > 0) 5 { 6 treeNode.Expanded = true; 7 foreach (DataRow row in rows) 8 { 9 TreeNode node = new TreeNode();10 node.Text = row["Text"].ToString();11 treeNode.ChildNodes.Add(node);12 ResolveSubTree(row, node);13 }14 }15 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。