2016-08-30 1 views
0

Ich habe versucht, das List-Objekt der Datenquelle der DataGridView in Windows Forms-Anwendung zuzuweisen. Aber es zeigt die leeren Daten im Raster. Gibt es einen Grund dafür oder fehlt mir irgendetwas?Liste <int> collecion kann nicht als Datenquelle verwendet werden als DataGridView

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

Aber wenn ich "List" Sammlung an das Netz zuweisen, wird es wie unten arbeiten,

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

enter image description here

+1

Das Raster ** Spalten ** ** die Eigenschaften repräsentieren ** der Objekte in den Zeilen enthalten . Da 'int' (wie auch andere einfache Typen) keine Eigenschaften hat, hat das Gitter keine Spalten. –

+0

Aber String-Auflistung Auflistung zeigt die Länge als Spalte. Gibt es einen Grund? –

+2

@NeelakandanK Das liegt daran, dass String nur eine Eigenschaft hat Länge – hankide

Antwort

1

Der Grund ist es das tut es funktioniert, ist, dass DataGridView sucht nach Eigenschaften, die auf dem Objekt angezeigt werden. String hat eine Eigenschaft, Länge, also wird sie im Raster angezeigt. Integer hat keine Eigenschaften.

Um es funktionieren zu lassen, könnten Sie eine neue Klasse mit einer Eigenschaft vom Typ int erstellen. Sie können dem DataGridView dann eine Liste dieser benutzerdefinierten Objekte geben und steuern, was angezeigt wird.

Bearbeiten:This answer hat ein Beispiel zur Lösung Ihres Problems.

+0

Vielen Dank für Ihre Informationen –

+0

@NeelakandanK Kein Problem, fühlen Sie sich frei, dies als eine Antwort auf Ihre Frage zu markieren, wenn Sie das Problem gelöst fühlen. – hankide

0

DataGridView benötigt Objekte in der Liste, um Eigenschaften zu haben. Der String hat die Eigenschaft "Length", also wird er angezeigt. Die Zahl 1 ist die Länge der Zeichenfolge, nicht der Inhalt der Zeichenfolge.

Wenn Sie keine neue Klasse erstellen möchten, können Sie anonyme Typen wie diesen:

List<int> sample = new List<int>(); 
sample.Add(1); 
this.dataGridView1.DataSource = sample.Select(k=> new {Value = k}).ToList(); 
Verwandte Themen