2016-12-04 7 views
0

ツリービューで項目を追加する方法は? 1つのDataRowには、親項目が1列、残りの列が子ノードです。行構造は次のとおりです。TreeViewにDataRowを設定する

表 - 人

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アプリケーションのみを使用しています。私はすでにデータベースに接続していました。 TreeViewにDataRowCollectionを設定するだけです。

上記の考えを実現するためのサンプルコードです。

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、これを試しましたか?あなたの問題を解決しましたか? –

関連する問題