2

我有一个可以容纳孩子的对象,所以每个对象的孩子自己都有孩子。所以想象是一个 3 级分层树。但是这个数字不是固定的,它可以是 4,5 甚至 6 个层级。我已经有一个 BindingList,它是所有 Root 节点的列表。有谁知道将其转换为表格的直接方法?所以每个级别将是层次结构的一列。创建列很简单,但我不确定如何在不知道需要多少个循环的情况下填充它?

任何建议都非常感谢。

干杯。

4

3 回答 3

1

我认为最好的方法是递归。我不知道 BindingList 的结构,我会写我能写的最通用的,给你调整正确的方法名称:

void visitNode(Node loc, int level)
{
    //write here the code to save the node loc in the column = 'level'

    foreach(Node n in Loc.children)
        visitNode(n, level + 1);
}

其中 Node 是孩子的类型,而 Loc.children 是孩子的列表或集合。

该递归将访问所有节点。

于 2013-04-16T13:42:32.350 回答
1

如果您使用的是 SQL Server 2008,则可以使用hierarchyid

您还可以查看以下关于 SO 的文章

于 2013-04-16T13:44:15.453 回答
0

我已经设法通过跟踪终端节点来解决这个问题,然后简单地一一返回层次结构。(因此,从技术上讲,输入该行的最后一个单元格并返回左侧。)

于 2013-04-17T09:27:33.643 回答