Laden...

Sortierung per DataGridView.SortCompare-Ereignis funktioniert nicht wunschgemäß

Letzter Beitrag vor einem Jahr 3 Posts 564 Views
Sortierung per DataGridView.SortCompare-Ereignis funktioniert nicht wunschgemäß

Hi zusammen,

ich bräuchte nochmal Hilfe beim Sortieren eines ungebundenen Datagridviews. Ich habe ein DGV 'dgvZeit' in dem sich die Spalte 'tag' befindet. Diese ist mit Wochentagen (Montag, Dienstag...) gefüllt. Ein Klick auf den Header sortiert die Tage alphabetisch. Gewünscht ist aber die 'normale' Wochentagreihenfolge. Deshalb wollte ich das SortCompare Ereignis nutzen, um die entsprechende Sortierreihenfolge herzustellen. Das Ergebnis von e.SortResult interessiert mein DGV aber nicht. Es sortiert trotzdem alphabetisch. Was mache ich falsch?

        private void dgvZeit_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
        {
            string[] tage = { "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag" };
            if (e.Column.Name == "tag") 
            {
                if (Array.IndexOf(tage, e.CellValue1.ToString()) > Array.IndexOf(tage, e.CellValue2.ToString())) e.SortResult = 1;
                else if (Array.IndexOf(tage, e.CellValue1.ToString()) < Array.IndexOf(tage, e.CellValue2.ToString())) e.SortResult = -1;
                else e.SortResult = 0;
                //msgbox($"{e.CellValue1.ToString()}, {e.CellValue2.ToString()} result: {e.SortResult}");
            }
        }

Es muss die Handled-Eigenschaft auf true gesetzt werden.

Siehe auch Beispiel.

Zitat von david.m

Es muss die Handled-Eigenschaft auf true gesetzt werden.

Dankeschön, jetzt funktioniert es.