如何递归填充TreeView

use*_*807 6 c# recursion winforms

好吧,我在一个名为departments的数据库中有一个表,它有以下字段: Id,Parent,Name,IsActive.

用这些数据填充TreeView的最佳方法是什么?

Mon*_*nah 16

你可以使用以下

1-将数据库中的数据检索到datatable或list中,将其称为dataList

public void PopulateTree(ref TreeNode root,List<Department> departments)
{
    if(root==null)
    {
          root=new TreeNode();
          root.Text="Departments";
          root.Tag=null;
          // get all departments in the list with parent is null
          var details=departments.Where(t=>t.Parent==null);
          foreach(var detail in details)
          {
              var child= new TreeNode(){
                  Text=detail.Name,
                  Tage=detail.Id,
              };
              PopulateTree(ref child,departments);
              root.Nodes.Add(child);
          }      
    }
    else
    {
         var id=(int)root.Tag;
         var details=departments.Where(t=>t.Parent==id);
         foreach(var detail in details)
         {
              var child= new TreeNode(){
                  Text=detail.Name,
                  Tage=detail.Id,
              };
              PopulateTree(ref child,departments);
              root.Nodes.Add(child);
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

并在Load事件中

TreeNode root=null;
var departments=query from database
PopulateTree(ref root,departments);
Run Code Online (Sandbox Code Playgroud)

希望这会对你有所帮助

问候