Ist es möglich, Zeilen und Spalten in einer Datagridview zu wechseln?

8

Ich habe 10 Datensätze von Daten in einer DataTable, die 3 Felder "Foo", "Bar" und "Baz" hat.

Wenn ich diese Verbindung in ein DataGridView verbinde, sehe ich 10 Zeilen und 3 Spalten, und die Spaltenköpfe zeigen die Namen der Felder an.

Ich frage mich, wie einfach es ist, die Zeilen und Spalten umzukehren, so dass ich mit den gleichen Daten drei Zeilen und zehn Spalten habe, wobei Feldnamen in den Zeilenköpfen angezeigt werden.

Ich kann manuell einige Dinge tun, wie zum Beispiel eine OnPaint-Methode überschreiben und die Feldnamen direkt in die Zeilenkopfzellen zeichnen, aber ich suche etwas Automatisierteres.

Auch hier gibt es einen Vorschlag, die Werte manuell zu vertauschen, aber wenn ich nicht alle Werte für Strings mache, wird das nicht funktionieren. 3 Spalten in einer Datentabelle - Foo, Bar und Baz der Typen int, float und string werden einfach nicht transponiert.

Selbst wenn ich alle diese manuellen Änderungen vorgenommen habe, haben meine Datenraster CheckBox-Spalten, ComboBox-Spalten - es existiert kein solches Gegenstück - es gibt keine CheckBox-Zeile oder ComboBox-Zeile. Wo ich dem Compiler gerade sagen muss "Add a ComboBoxColumn" müsste ich neu schreiben, damit jede Zelle einzeln generiert wird.

Idealerweise hätte ich gerne eine TransposableDataGridView, die die gesamte Funktionalität der DataGridView mit einer zusätzlichen bool-Eigenschaft "Transposed" zur Verfügung stellt. Auf diese Weise könnte ich meinen gesamten Code genau so lassen, wie er ist - ich würde nichts außer dem Typ des Rasters ändern müssen.

Wenn nichts derartiges existiert, muss ich vielleicht einfach hingehen und es schreiben. (Sollte nur ein Jahr oder so dauern!:)

    
Tim Gradwell 12.05.2009, 16:27
quelle

5 Antworten

5

Sie können eine neue DataTable erstellen, die entsprechende Anzahl von Spalten hinzufügen und dann Werte von einer Tabelle in die andere kopieren, nur Zeilen und Spalten vertauschen.

Ich denke nicht, dass Sie den Zeilenkopf auf die gleiche Weise wie den Spaltenkopf setzen können (oder zumindest weiß ich nicht wie), so dass Sie die Feldnamen in eine separate Spalte einfügen können.

%Vor%     
svick 12.05.2009 19:13
quelle
2

Ich verwende das Developer Expres Vertical Grid . Es ist so, als ob Sie ein gedrehtes Gitter wünschen. Es erlaubt auch einen anderen Editor pro Zeile.

Link zur vertikalen Grid-Produktseite

    
Julian de Wit 05.08.2009 13:08
quelle
1

Sie können das tun, indem Sie programmgesteuert die Anzahl der Spalten hinzufügen, die Sie benötigen (z. B. 7 weitere, um 10 zu machen) und dann programmgesteuert Zeile, Spalte mit Spalte, Zeile tauschen.

    
Arnshea C 12.05.2009 17:09
quelle
1

Dieser Code sollte den Trick machen Ссылка

Die Anzeige ist asp.net, aber Sie können die resultierende Datentabelle an datagridview binden und das gewünschte Ergebnis erhalten

    
Kumar 28.07.2009 17:17
quelle
0

In meinem Fall musste auch allen Spalten der neuen Tabelle ein Name hinzugefügt werden. Ich habe eine Funktion geschrieben, um eine transponierte Tabelle wie folgt zu erstellen:

%Vor%     
Antonio 25.09.2015 12:18
quelle

Tags und Links