Проблема в том, что я обдумываю эту вложенную проблему Департаментов. - PullRequest
0 голосов
/ 01 ноября 2010

после небольшой настройки моего кода я получил небольшое доказательство концепции кода:

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 и затем правильно назначает его дочерних элементов для правильного родителя.

Моя проблема в том, как мне обращаться с детьми детей? Вложенные отделы.

Я не могу обернуться вокруг него.

Спасибо за любые советы.

1 Ответ

2 голосов
/ 01 ноября 2010

Вам нужно использовать рекурсию:

  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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...