Laden...

DataSet sortieren

Letzter Beitrag vor 17 Jahren 17 Posts 2.584 Views
DataSet sortieren

Hallo,

ich erhalte ein DataSet mit zwei Tabellen aus einer Datanbankabfrage. Wie kann ich die erste Tabelle sortieren? (Erste Spalte enthählt ID#s - also sortiern nach ID in erster Spalte?)

Danke Oli

Viele Grüße, Oli

eine DataTable kann man meines Wissens nach gar nicht sortieren. Dafür gibt es DataViews. Mit einer DataView kannst du beliebig viele (editierbare) Sichten auf eine DataTable erzeugen.

Eine Datenmenge ist grundsätzlich unsortiert. Zusätzlich wird "erwartet", dass im SELECT-Befehl die ORDER BY-Klausel eingefügt werden kann.

Das trifft zu:

Original von GarlandGreene
eine DataTable kann man meines Wissens nach gar nicht sortieren. Dafür gibt es DataViews. Mit einer DataView kannst du beliebig viele (editierbare) Sichten auf eine DataTable erzeugen.

Siehe :rtfm: Sortieren und Filtern von Daten mit einer DataView

Gruß Jürgen

Hallo Jürgen,

Original von juetho
Eine Datenmenge ist grundsätzlich unsortiert. Zusätzlich wird "erwartet", dass im SELECT-Befehl die ORDER BY-Klausel eingefügt werden kann.

Das ist mir klar nur habe ich eben das Problem nur auf stored Procedures einer Sybasee Datanbank zugreifen zu können. Und an diesen Prozeduren kann(darf) ich leider nichts ändern.

Ich habe jetzt die erste Tabelle in eine DataView gepackt, aber mit dem Sortieren komme ich immer noch nicht zurecht. DataView.sort funzt net und wenn ich auf die Columns zugreife kann ich nicht sortieren.

Sitz ich auf der Leitung?

Grüße Oli

Viele Grüße, Oli

Hallo nochmal,

ok, war auf der Leitung gesessen. Sortieren klappt ja (naja aber halt wie....) 1,10,2,20,21,22,3,4,5,6,7...... des kann ja net wahr sein oder??
Muss ich wirklich ne Sortiefunktion bauen? Dachte .net kann richtig sortieren....

Naja Danke nochmal.... Oli

Viele Grüße, Oli

Wie poste ich richtig? Punkt 5

Ich vermisse z.B. Code, den Du versucht hast (in Verbindung mit der DataTable). Jürgen

Original von oli001
Sortieren klappt ja (naja aber halt wie....) 1,10,2,20,21,22,3,4,5,6,7...... des kann ja net wahr sein oder??

Das liegt wahrscheinlich daran, dass deine Sortierspalte nicht numerisch ist, oder?

Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)

Man kann eine DataTable wie folgt sortieren:


// dt = deine DataTable
// Sortieren nach Spalte ASC/DESC
dt.DefaultView.Sort = "SPALTE ASC";
dt = dt.DefaultView.ToTable();


Zu deiner Sortierung:
Die ist im Grunde vollkommen Richtig, nur er sortiert es wie Kapitel, also:
1.1,1.2,2.0,usw...

Das liegt tatsälich daran, das der Typ deiner Column String ist, dies kannst
du aber vor dem erstellen mit Column.DataType = typeof(z.b. int) ändern.

Das sortieren über den DefaultView ist nett. Habe nämlich ein ähnliches Problem. Ich möchte aber eine typisierte DataTable sortieren. Hast du dafür auch einen guten Tipp? Da ja die Methode ToTable eine DataTable zurückliefert.

Gz
.tim

Das ToTable braucht eigentlich kein mensch, da dadurch die Daten verdoppelt
werden, und Bindungen und sonstiges zerstört werden.

Aber jede DataTable auch typisierte haben einen DefaultView, den man sortieren lassen kann.

Auch hat jedes typisierte DataSet auch typisierte Views, die Du benutzen kannst.

Ich finde das typisierte View leider nicht an dem DataSet. Kannst du mir bitte sagen wo ich das finden kann?

Vielen Dank
.tim

Da ich diese Typisierten Monster nie benutze, war ich davon ausgegangen, das
in den millionen zeilen generierten Codes auch typisierte Views stehen.

Was spricht gegen den DefaultView, oder einen normalen DataView?

Das Problem ist, ich habe Crystal Reports die diese typisierten DataTables bzw. DataSets benutzen. Beim Erstellen der DataTables kommen die Informationen aus verschiedenen Quellen deshalb kann ich vorher nicht gut sortieren und wollte gerne die implementierten Methoden des Views benutzen.

EDIT: Die Identifikation, welcher Report benutzt wird, geschieht anhand des Types des DataSets. Da das bereits alles umgesetzt ist, möchte ich nicht den ganzen Code umwerfen.

Wo ist da jetzt das Problem?

Auch deine Typisierten Tables haben ein Property mit dem namen DefaultView.

DefaultView ist aber nicht typisiert. D.h. ich habe meine typisierte DataTable und lasse sie über das DefaultView sortieren. Nun führe ich ToTable() aus, damit ich die sortierte Tabelle bekommen. Nun habe ich aber auch die Typisierung verloren, also habe ich wieder nur eine DataTable.

Selber schuld 😉

Nein im ernst, nocheinmal du brauchst das ToTable nicht.

Du musst an CR nur den defaultView statt der dataTable übergeben,
dann ist doch alles ok.
Du kannst weiter mit diesen Monstern arbeiten, und trotzdem gefilterte
Daten an CR übergeben.

Ok danke. Werde ein bisschen rumprobieren wie es am besten passt.