C# 递归实现读取SQL Server数据表册到TreeView中

1、建立SQL Server数据表,共三列(注意id和pid不要用字符串,用数字类型)

id name pid
1 一级分类A
2 一级分类 B
3 一级分类C
4 一级分类下的二级分类a 1(注意这里写他的上级所在的行)
5 一级分类下的二级分类b 1(同上)
6 一级分类 B的二级分类a 2(注意这里写他的上级所在的行,就是2)
7 一级分类下的二级分类a下的三级分类a 4(写它的上一级分类所在的行)

2、将SQL Server中的表读取到程序中忽略,这方面的文章太多了
3、建立递归调用

  public void creattree(int fid, TreeNode parentnode)
        {

            DataTable dt = new DataTable();
            dt = OceanData.wellNameData;//这里设置成你读到程序里的数据表即可
            DataRow[] drs = dt.Select("pid=" + fid);//如果上面的表两列不是数字型这里会出错
            foreach (DataRow row in drs)
            {
                if (parentnode != null)
                {
                    TreeNode tempnode = new TreeNode();
                    tempnode.Text = row["name"].ToString();
                    tempnode.Name = row["id"].ToString();
                    parentnode.Nodes.Add(tempnode);
                    creattree(Convert.ToInt32(row["id"]), tempnode);
                }
                else
                {
                    TreeNode tempnode = new TreeNode();
                    tempnode.Text = row["name"].ToString();
                    tempnode.Name = row["id"].ToString();
                    treeView1.Nodes.Add(tempnode);
                    creattree(Convert.ToInt32(row["id"]), tempnode);
                }
            }
        }

4、调用递归

 treeView1.Nodes.Clear();
                creattree(0, (TreeNode)null);
发布了19 篇原创文章 · 获赞 36 · 访问量 4071

猜你喜欢

转载自blog.csdn.net/CVSTO/article/details/104952517