treeview动态填充

时间:2011-01-16 22:50:15

标签: c# winforms treeview

我有这个treeview控件,我想把上传的文件放在服务器上。 我希望能够从数据库动态创建节点和子节点。 我正在使用此查询从DB获取数据:

 SELECT c.Category, d.DocumentName FROM Categories c  
  INNER JOIN DocumentUserFile d
  ON c.ID = d.CategoryId
  WHERE d.UserId = '9rge333a-91b5-4521-b3e6-dfb49b45237c'

该查询的结果是:

议程

transactions.pdf

分钟

accounts.pdf

我希望树视图也这样排序。 我正在尝试使用这段代码:

TreeNode tn = new TreeNode();
TreeNode tnSub = new TreeNode();               
foreach (DataRow dt in tblTreeView.Rows)
{

    tn.Text = dt[0].ToString();
    tn.Value = dt[0].ToString();
    tnSub.Text = dt[1].ToString();
    tnSub.NavigateUrl = "../downloading.aspx?file=" + dt[1].ToString() +"&user=" + userID;
    tn.ChildNodes.Add(tnSub);
    tvDocuments.Nodes.Add(tn);
}

我正在为第一类和该类别下的文档很好地填充树视图,但是当我想在该类别下显示更多文档时,我无法使其工作,或者甚至更复杂以在下面显示新类别第一个包含该类别的文件。 我怎么解决这个问题? 我很欣赏这些答案。 谢谢,Laziale

1 个答案:

答案 0 :(得分:1)

您应该为每个项目创建新节点:

// TreeNode tn = new TreeNode();
// TreeNode tnSub = new TreeNode();               
foreach (DataRow dt in tblTreeView.Rows)
{
    TreeNode tn = new TreeNode();     // *
    tn.Text = dt[0].ToString();
    tn.Value = dt[0].ToString();

    TreeNode tnSub = new TreeNode();  // *
    tnSub.Text = dt[1].ToString();
    tnSub.NavigateUrl = "../downloading.aspx?file=" + dt[1].ToString() +"&user=" + userID;
    tn.ChildNodes.Add(tnSub);
    tvDocuments.Nodes.Add(tn);
}