zoukankan      html  css  js  c++  java
  • 递归方式实现树的展示形式

    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         }
    View Code

    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         }
    View Code

    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         }
    View Code
  • 相关阅读:
    让xamarin的Entry绑定时,支持Nullable类型
    xamarin.forms 绑定页面里指定元素的某个属性值
    俄文环境下,字符串转数字失败
    使用devstack安装openstack
    在linux中访问macos 下的分区。
    git 多用户多仓库配置
    Macos上 ProxyChains 的坑, 需要关闭 sip
    MacOS 的预览 Preview 打开pdf 容易卡死 解决方案
    一客户端使用多个密钥对登录多个主机的解决方案.
    MacOS 10.13.6 下装xcode 流程
  • 原文地址:https://www.cnblogs.com/shinelhui/p/3810967.html
Copyright © 2011-2022 走看看