2009-01-12 4 views
5

Ich bin auf der Suche nach einer App zu entwickeln, die von DataGridView unterklassifizierte Arbeitsblätter enthält. Benutzer können CSV-ähnliche Daten in das Arbeitsblatt einfügen (oder importieren) und in einer Datenstruktur im Speicher widerspiegeln - meine erste Vermutung wäre ein 2D-Array von Floats.Kann ich mehrdimensionale Daten an eine DataGridView in C# und .NET binden?

DataGridView kann an Objekte mit einer bestimmten Menge von Schnittstellen gebunden werden (d. H. IList, IListSource usw.), und theoretisch könnte ich eine Klasse erstellen, die ein 2D-Array einkapselt und eine dieser Schnittstellen implementiert. Was jedoch rätselhaft ist, ist, dass die Schnittstellenspezifikationen nur für 1-dimensionale Arrays zu sorgen scheinen - siehe zum Beispiel IList. Was ist los?!

Update: Aus den Antworten scheint IList für Listen von Objekten. Gibt es eine Möglichkeit, ein mehrdimensionales Array beliebiger Größe (von Floats) an ein DataGridView zu binden? Oder ist es in Ordnung, das DataGridView selbst als Datenstruktur zum Speichern der Floats zu verwenden?

Antwort

2

Denken Sie auf diese Weise. Eine IList kann eine Sammlung von Objekten sein. Jedes Objekt kann dann mehrere Eigenschaften in sich haben. Im Wesentlichen ist das wie ein 2D-Array. Die erste Dimension ist das Objekt und alle seine Eigenschaften, und die zweite Dimension ist eine Sammlung dieser Objekte. Etwas wie folgt aus:

list[0] --> Name, (think of this as list[0]["Name"]) 
      Age, (think of this as list[0]["Age"]) 
      Height (think of this as list[0]["Height"]) 


list[1] --> Name, (think of this as list[1]["Name"]) 
      Age, (think of this as list[1]["Age"]) 
      Height (think of this as list[1]["Height"]) 

Also, in Ihrem Fall, wenn die Spalten festgelegt sind, dann müssen Sie nur ein Objekt haben, die alle Felder verkapselt und dann eine Sammlung dieser Objekte haben, die dann an die gebunden werden Datenrasteransicht.

Wenn das keinen Sinn ergibt, habe ich deine Frage nicht verstanden und entschuldige mich.

+0

Yup das macht Sinn, habe Frage – Brendan

3

Ich habe so etwas schon einmal gemacht, here - ein 2D-Array in einem IList darstellend; könnte nützlich sein.

+0

geändert Es ist eine gute Idee, aber nicht ganz da - ich arbeite mit Daten, die Größe in jeder Dimension ändern kann, dh eine Spalte kann genauso schnell wie eine Zeile gelöscht werden – Brendan

+0

Das kann in der Theorie simuliert werden, aber die Gittersteuerung wird Ihnen dabei nicht helfen. –

Verwandte Themen