2017-02-13 14 views
1

DataGridViewをDictionaryにバインドしてキーを列として使用する方法はありますか?DataGridViewをDictionaryにバインドしてキーを列として使用する方法はありますか?

var items = new Dictionary<string, List<int>>(); 
items.Add("Column 1", new List<int>{ 1, 2, 3 }); 
items.Add("Column 2", new List<int>{ 1, 2, 3 }); 
items.Add("Column 3", new List<int>{ 1, 2, 3 }); 

は、私のようなものを見てみたい:例えば

は、私のようなものを持っている

dynamic itemsData = new ExpandoObject(); 

IDictionary<string, object> items = (IDictionary<string, object>)itemsData; 
items.Add("Column 1", new List<int>{ 1, 2, 3, 4, 5 }); 
items.Add("Column 2", new List<int>{ 1, 2, 3, 4, 5 }); 
items.Add("Column 3", new List<int>{ 1, 2, 3, 4, 5 }); 

bindingSource1.DataSource = itemsData; 
dataGridView1.DataSource = bindingSource1; 
:私は動的オブジェクトに簡単な辞書を変換しようとした
[ Column 1] [ Column 2] [ Column 3] 
1   1   1 
2   2   2 
3   3   3 

しかし効果はなく、結果として得ました:

[ Key] [ Value ] 
Column 1 System.Collect... 
Column 2 System.Collect... 
Column 3 System.Collect... 

ありがとうございました。

+2

水平に考えるオブジェクトに垂直方向のデータを追加しようとしています。一般的なパターンは、列ではなくデータグリッドに行のデータを追加することです。 – Forklift

答えて

0

DataGridViewに辞書をバインドすることはできません。オブジェクトをDataGridViewのDataSourceにバインドするには、そのオブジェクトはIList、ListSourceを実装する必要がありますが、Dictionaryは実装しません。

辞書をデータテーブルに変換し、それをDataGridViewにバインドすることで回避できます。

Column1、Column2 ----- ColumnNとしてテーブルの列名を作成し、対応する行数を作成します。

注:変換のオーバーヘッドがパフォーマンスに影響することがあります。

関連する問題