2016-08-30 5 views
0

WindowsフォームアプリケーションのDataGridViewのデータソースにListオブジェクトを割り当てようとしました。しかし、空のデータがグリッドに表示されます。 これには何らかの理由がありますか、何か不足していますか?List <int> collecionをDataGridViewとしてデータソースとして使用することはできません

List<int> sample = new List<int>(); 
sample.Add(1); 
this.dataGridView1.DataSource = sample; 

しかし、私は、グリッドに"リスト"コレクションを割り当てた場合、それはそれがない働いている理由

List<string> sample = new List<string>(); 
sample.Add("1"); 
this.dataGridView1.DataSource = sample; 

enter image description here

+1

グリッド**列** **プロパティを表す**:

新しいクラスを作成したくない場合は、あなたがこのような匿名型を使用することができますが。 'int'(他の単純型と同様に)はプロパティを持たないので、グリッドは列を持たない。 –

+0

しかし、文字列型のListコレクションはLengthを列として表示します。何か理由はありますか? –

+2

@NeelakandanKこれは、文字列にはプロパティーの長さが – hankide

答えて

1

、以下のように働いている、ということですDataGridViewは、オブジェクトに表示するプロパティを検索します。 StringにはLengthという1つのプロパティがあり、グリッドに表示されます。 Integerにはプロパティがありません。

これを機能させるには、int型のプロパティを持つ新しいクラスを作成します。これらのカスタムオブジェクトのリストをDataGridViewに渡し、表示される内容を制御できます。

編集:This answerには、問題の解決方法の例があります。

+0

あなたの情報をありがとう –

+0

@NeelakandanK問題は解決したように感じるならば、あなたの質問への答えとしてこれをマークしても問題ありません。 – hankide

0

DataGridViewでは、リスト内のオブジェクトにプロパティが必要です。文字列はプロパティ "Length"を持っているので、表示されます。番号1は文字列の長さであり、文字列の内容ではありません。行に含まれるオブジェクトの

List<int> sample = new List<int>(); 
sample.Add(1); 
this.dataGridView1.DataSource = sample.Select(k=> new {Value = k}).ToList(); 
関連する問題