将树列表转换为表格

时间:2013-04-16 13:28:52

标签: c# tree bindinglist

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

非常感谢任何建议。

干杯。

3 个答案:

答案 0 :(得分: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是列表或子集合。

该递归将访问所有节点。

答案 1 :(得分:1)

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

您还可以查看SO上的以下文章

答案 2 :(得分:0)

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