在调整了我的代码之后,我得到了这个概念代码的小证据:
private void button1_Click(object sender, EventArgs e)
{
DepartmentRepository repo = new DepartmentRepository();
var entries = repo.FindAllDepartments(); //Returns IQueryable<Department>
treeView1.BeginUpdate();
var parentDepartments = entries.Where(d => d.IDParentDepartment == null).ToList();
foreach (var parent in parentDepartments)
{
TreeNode node = new TreeNode(parent.Name);
treeView1.Nodes.Add(node);
var children = entries.Where(x => x.IDParentDepartment == parent.ID).ToList();
foreach (var child in children)
{
node.Nodes.Add(child.Name);
}
}
treeView1.EndUpdate();
}
它将每个父部门放在TreeView控件中,然后正确地将它的子部分配给正确的父部分。
我的问题是,我该如何处理孩子的孩子?嵌套部门。
我似乎无法绕过它。
感谢任何指导。
答案 0 :(得分:2)
您需要使用递归:
void LoadNode(TreeNode node, Department d)
{
foreach (var child in d.Children)
{
TreeNode childNode = node.Nodes.Add(child.Name);
LoadNode(childNode, child); // calls the method again for the next level
}
}
看看这里的递归样本: http://www.codeproject.com/KB/cs/recursionincsharp.aspx