2016-12-04 131 views
0

如何在树视图中添加项目?对于一个DataRow,它将父项包含为一列,其余列为子节点。行结构如下。使用DataRow填充TreeView

表 - 个人

column1 - SSN (text) 

column2 - Name (text) 

column3 - Age (int) 

column4 - country (text) 

column5 - height (double) 

当你点击/扩展名,它看起来像下面。

( - )命名

- Age 

- Country 

- Height 

每一行,将显示像上述树视图。 如何在TreeView中填充它?行中的3列是名称列(父节点)的子节点。我只使用C#和.Net 4.5和Winform应用程序。我已经设法连接到数据库了。只需要用DataRowCollection填充TreeView。

以下是试图实现上述想法的示例代码。

private void FillDataInTree(DataRowCollection rows) 
    { 
     foreach(DataRow r in rows) 
     { 
      TreeNode[] cNodes = new TreeNode[3]; 
      for(int i=0; i<3; i++) 
      { 
       cNodes[i].Text = r[i + 1].ToString(); 
      } 
      TreeNode node = new TreeNode(r["pName"].ToString(), cNodes); 
      playerTreeView.Nodes.Add(node); 
      //playerTreeView.Nodes 
     } 
    } 
+0

你能告诉我们你试过了什么吗? – Alexei

+0

和SSN专栏? – Steve

+0

SSN列是主键,不在TreeView数据中显示。 – Francesco

回答

0

循环应该是这样的

foreach (DataRow row in rows) 
{ 
    TreeNode node = playerTreeView.Nodes.Add(row.Field<string>("SSN"), row.Field<string>("Name")); 
    node.Nodes.Add(row.Field<int>("Age").ToString()); 
    node.Nodes.Add(row.Field<string>("Country")); 
    .... 
} 
0

使用.Nodes.Add()创建你的名字节点的子节点:

private void FillDataInTree(DataRowCollection rows) 
{ 
    foreach(DataRow r in rows) 
    { 
     TreeNode node = new TreeNode(r["pName"].ToString()); 
     playerTreeView.Nodes.Add(node); 

     for(int i = 0; i < 3; i++) 
      node.Nodes.Add(r[i + 1].ToString()); 
    } 
} 

和我一起@Steve同意按名称检索领域比索引要好。

+0

@Francesco,你试过这个吗?它解决了你的问题吗? –