我需要填充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
您能为我提供一些代码示例吗?谢谢你们!
答案 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的孩子附加到它。然后为每个新附加的子项重复该过程(因此递归)。