TreeView如何以编程方式创建节点

时间:2011-01-06 14:01:22

标签: c# asp.net tree

我需要填充TreeView 控件以显示数据库中的层次结构数据。

层次结构顺序由我的数据库中的一个列决定,名为“CategoryNodeString”和“CategoryNodeLevel”。

/ = Root

示例:

CategoryId   CategoryNodeString   CategoryNodeLevel
1            /                    0
2            /1/                  1
3            /2/                  1
4            /1/1/                2
5            /1/2/                2
6            /1/1/1               3

您能为我提供一些代码示例吗?谢谢你们!

1 个答案:

答案 0 :(得分:1)

使用此数据源构建树视图并不容易。复杂性因为节点之间没有父子关系。 CategoryNodeString应该读取父CategoryId的Id,如下所示:

CategoryId     ParentCategoryId   Node Display String
0              0                  Parent
1              0                  SubParent
2              0                  SubParent
3              1                  Child
4              2                  Child

根据这些数据,您可以获得以下结构:

0 (Parent)
+--1 (SubParent)
|  +--3 (Child)
+--2 (SubParent)
|  +--4 (Child)

等等。通过检查每个节点的parentCategoryId,可以使用Linq到对象递归地(半)地构建此树。首先找到parentCategoryId的最低值。创建该节点(使用System.Web.UI.TreeNode对象)。然后将所有同时共享该parentCategoryId的孩子附加到它。然后为每个新附加的子项重复该过程(因此递归)。