我有一个可以容纳孩子的对象,所以每个对象的孩子自己都有孩子。所以想象是一个 3 级分层树。但是这个数字不是固定的,它可以是 4,5 甚至 6 个层级。我已经有一个 BindingList,它是所有 Root 节点的列表。有谁知道将其转换为表格的直接方法?所以每个级别将是层次结构的一列。创建列很简单,但我不确定如何在不知道需要多少个循环的情况下填充它?
任何建议都非常感谢。
干杯。
我有一个可以容纳孩子的对象,所以每个对象的孩子自己都有孩子。所以想象是一个 3 级分层树。但是这个数字不是固定的,它可以是 4,5 甚至 6 个层级。我已经有一个 BindingList,它是所有 Root 节点的列表。有谁知道将其转换为表格的直接方法?所以每个级别将是层次结构的一列。创建列很简单,但我不确定如何在不知道需要多少个循环的情况下填充它?
任何建议都非常感谢。
干杯。
我认为最好的方法是递归。我不知道 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 是孩子的列表或集合。
该递归将访问所有节点。
如果您使用的是 SQL Server 2008,则可以使用hierarchyid
您还可以查看以下关于 SO 的文章
我已经设法通过跟踪终端节点来解决这个问题,然后简单地一一返回层次结构。(因此,从技术上讲,输入该行的最后一个单元格并返回左侧。)