GridView sortieren
-
Guten Morgen!
Ich möchte, dass die Spalten in meinem GridView sortierbar sind.
Geht standardmäßig ja auch, nur habe ich ein Problem mit der Datumsspalte:Wenn ich da sortiere, dann wird nach dem Tag sortiert ... also so:
09.09.2010
10.10.2010
11.09.2010
12.09.2010Wenn ich es so mache:
dgv.Sort(dgv.Columns[1], ListSortDirection.Ascending);
Dann wird ja immer nur in eine Richtung sortiert, wie kann ich bei einem erneuten Click die Desc Richtung wählen?
Soll ich dazu eine true/false Variable setzen, oder gibt es eine schönere Lösung?Danke!
-
Probiere mal:
dgv.Columns[1].ValueType = typeof(DateTime);
Du mußt dann aber auch die Werte als DateTime in die Spalte eintragen, nicht als String!
Und bzgl. der Sortierrichtung, schau dir das Beispiel zu der Sort-Methode in der MSDN dazu an: http://msdn.microsoft.com/en-us/library/0868ft3z.aspx
-
Wenn ich die Werte aber als String in die Spalte eintrage, gibt es dafür auch eine Methode?
-
Dann mußt du einen eigenen Comparer schreiben und die überladene Sort-Methode aufrufen: http://msdn.microsoft.com/en-us/library/wstxtkxs.aspx
-
Habs mit folgendem Code versucht:
string text = dr.GetString(0); dgvBestelluebersicht.Columns[1].ValueType = typeof(DateTime); dgvBestelluebersicht[1, i].Value = DateTime.ParseExact(text, "dd.MM.yyyy HH:mm:ss", new CultureInfo("de-DE")).ToString("dd.MM.yyyy");
Und dazu noch die Sort-Methode (von dem Link).
Leider wird immer noch falsch sortiert.
-
Laß das ".ToString("dd.MM.yyyy")" mal weg - so hast du den Datumswert ja wieder als String hinzugefügt -)
Die Anzeige-Formatierung kannst du mittels DataGridViewColumn.DefaultCellStyle.Format festlegen:dgv.Columns[1].DefaultCellStyle.Format = "dd.MM.yyyy";
-
Vielen Dank - jetzt klappt es!