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);