Laden...

Wie kann man die Reihenfolge der Spalten in einer DataTable ändern?

Erstellt von dirkil vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.070 Views
D
dirkil Themenstarter:in
23 Beiträge seit 2006
vor 16 Jahren
Wie kann man die Reihenfolge der Spalten in einer DataTable ändern?

Durch Aufruf einer externen Methode, auf die ich keinen Einfluß habe, bekomme ich ein DataTable Objekt als Ergebnis zurück. Die Nutzer meiner Applikation können die Reihenfolge der Spalten angeben, in der das Ergebnis dargestellt werden soll.

Auf den ersten Blick erscheint es mir, das einfachste zu sein, die Reihenfolge der Spalten im DataTable Objekt zu ändern. Leider muß ich .NET 1.1 verwenden und wie es aussieht, gibt es dort nicht die Methode DataColumn.SetOrdinal, die es in 2.0 gibt.

Hat jemand eine Idee, wie ich die Reihenfolge ändern könnte?

Spontan fallen mir 2 Möglichkeiten ein:
1.) Ein neues (leeres) DataTable Objekt anlegen, die Columns aus dem original kopieren und in der richtigen Reihenfolge einfügen. Danach über die Rows iterieren und entsprechend eintragen. Da ich höchstwahrscheinlich nie viele Rows im Ergebnis habe, dürfte das gangbar sein.

2.) Ein Objekt eigenes DataTableSpecialOrder Objekt von DataTable ableiten und die Zugriffsmethoden auf Rows und Columns überschreiben. Allerdings hätte ich ein wenig Bedenken, daß ich wirklich alle relevanten Stellen erfasse.

Hat irgend jemand eine bessere Idee?

4.221 Beiträge seit 2005
vor 16 Jahren

Die Darstellung ist doch losgelöst von den Daten... will sagen dass man z.B: in einem DataGrid über ColumnStyles usw. festlegen kann welche Spalten man in welcher Reihenfolge anzeigen will.... und DA musst du ansetzen... nicht bei den Daten sondern erst bei der Darstellung.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

D
dirkil Themenstarter:in
23 Beiträge seit 2006
vor 16 Jahren

@Programmierhans

Das ist im Prizip richtig. Allerdings ist auch dieser Code nicht unter meiner Kontrolle.

Meine Aufgabe ist es, eine entsprechend gefüllte DataTable zu liefern, das dann an ein Syncfusion Grid gebunden wird. Das Grid wird je nach Anwendung auch an andere DataTables gebunden und liegt in einer anderen Assembly und kann nicht geändert werden.

Ich hätte das auch anders entworfen, aber wann ist man als Consultant schon mal auf der grünen Wiese? Wie üblich ist für Refactoring keine Zeit und kein Geld da.