我希望用我们的公司结构填充一个树形图。在我的数据库中,我有一个表格,其位置具有以下布局
PositionID - Integer for the position
PositionText - Text for the position
ReportsToID - Position ID that this position reports to.
我想加载首先向positionID = 0(根级别)报告的位置,然后在填充Treeview时从那里开始级联加载每个位置,这样我就可以得到如下内容:
-Position 1
-Position 3
-position 5
-Position 7
-Position 4
-Position 2
关于如何实现这一目标的任何建议都会很棒,甚至一些突发码也能帮助我走上正轨。
编辑:我能够轻松地将节点添加到我的树视图中,但是我有点挂断的是如何循环/递归搜索以便我可以处理我的项目并添加所有内容。我想某种方式我需要添加我的第一个节点,看看是否有人向该节点报告。如果有,请添加它们。然后,对于下一级节点,查看是否有人向他们报告然后继续。 我可能有点坚持如何干净有效地完成循环。答案 0 :(得分:1)
使用此记录集:
SELECT ReportsToID, PositionID, PositionText
FROM Table
ORDER BY ReportsToID, PositionID
然后
ReportsToID=0
)PositionID
节点下创建ReportsToID
节点
请注意,{1}已在步骤1或3中创建获得订单意味着您在进入下一级别之前总是创建一个完整的级别。
请注意,这里有一个重要的假设,那就是ID是增量的。例如,ReportsToID
的级别低于ReportsToID=5
您可以通过添加“路径”的更复杂的查询来避免这种情况。柱。然后你在路上订购。你需要一个CTE。
答案 1 :(得分:0)
TreeViews很棘手。 有两种方法。
优点:你曾经打过一次数据库。更少的代码。
缺点:如果有大量数据,treeView将需要一些时间来填充。
BeforeExpand
上查询数据库以填充节点。优点:非常快。
缺点:在每个节点的第一个BeforeExpand
上查询数据库。更多代码。
所以,如果你只有一些节点要填充第一种方法。 但是,如果有严重的数据,第二个更好。