【问题标题】:treeview dynamically populated树视图动态填充
【发布时间】:2011-01-16 22:50:15
【问题描述】:

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

 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

【问题讨论】:

    标签: c# winforms treeview


    【解决方案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);
    }
    

    【讨论】:

    • 感谢您的回答亨克。如果我想为每个类别创建节点而不是每个类别下的子节点,我该如何区分呢?提前致谢
    猜你喜欢
    • 2012-06-04
    • 2014-08-13
    • 2013-09-21
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多