2011-01-06 60 views
0

我需要填充TreeView控件以显示来自数据库的层次结构数据。TreeView如何以编程方式创建节点

层次结构顺序已由一个列支配,在我的数据库中称为“CategoryNodeString”和“CategoryNodeLevel”。

/=根

例子:

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

为什么你两次发布相同的问题? http://stackoverflow.com/questions/4613607/bound-a-treeview-control-to-user-defined-complex-type-using-ef-4 – 2011-01-06 15:14:31

+0

嗨,这里我假设没有EF invoved。它是一个类似的更简单的版本。你有什么主意吗?感谢您的留言 – GibboK 2011-01-06 15:26:42

回答

1

有了它,是不容易做到的建立你的树视图此数据源。复杂性是因为节点之间没有父母与子女的关系。该CategoryNodeString应读取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-to-objects递归地完成(半)构建此树。首先查找parentCategoryId的最低值。创建该节点(使用System.Web.UI.TreeNode对象)。然后追加所有也分享该parentCategoryId的孩子。然后重复每个新添加的子项的过程(因此递归)。

相关问题