递归方法建立树形目录

最近想写个连接数据库的树形目录,目录表结构如下:
 图片
总体思路:以Pid作为查询层次,每一层里面有递归下一层。
load里面的代码如下:
声明全局变量如下
 
        SqlConnection conn;
        SqlCommand cmd;
        SqlDataAdapter sda;
       
        DataTable dt;
//---------------------------------------------
 conn = new SqlConnection();
            conn.ConnectionString = "Data Source=(local);Initial Catalog=TreeCeshi;User Id=sa;Password=123456";
            conn.Open();
            cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select * from ceshi order by Pid";

            sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            // ds = new DataSet();
            dt = new DataTable();
            sda.Fill(dt);
            cmd.ExecuteNonQuery();
            TreeNode mainNode = new TreeNode();
            mainNode.Name = "main";
            mainNode.Text = "总目录";
            this.treeView1.Nodes.Add(mainNode);
            var rows = dt.Select("Pid='0'");
            TreeNode node;
            foreach (var row in rows)
            { 
                node = new TreeNode();
                node.Name = row["cid"].ToString();
                node.Text = row["name"].ToString();

                mainNode.Nodes.Add(node);
               // myPid++;
                addTree(node, dt,node.Name);


            }
            mainNode.Expand();
//------------------------------------------------------------------------------------------------------
递归节点添加函数如下:
         private void addTree(TreeNode Pnode,DataTable mytable,string rowIndx)
        {
            var rows = mytable.Select("Pid=" + rowIndx.ToString());
            TreeNode node1;
            int tmPid = 0;
              foreach (var rw in rows)
               {
                   node1 = new TreeNode();
                   node1.Name = rw["cid"].ToString();
                   node1.Text = rw["name"].ToString();

                   Pnode.Nodes.Add(node1);
                       addTree(node1, mytable, node1.Name);               
               }
          
        }

//------------------------------------------------------------------------------------------------ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值