2016-12-04 117 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,你試過這個嗎?它解決了你的問題嗎? –