递归方法建立树形目录

最近想写个连接数据库的树形目录,目录表结构如下:
 递归方法建立树形目录_第1张图片
总体思路:以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);               
               }
          
        }

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

你可能感兴趣的:(C#)