Sortieren ungebundener DataGridView-Spalten alphanumerisch in der Windows Forms-App
Posted: 28 Dec 2024, 18:53
Ich kann anscheinend keine aktuelle, aktualisierte Antwort finden. Die Grundfunktionalität funktioniert bei mir, da eine Liste automatisch wie folgt sortiert wird:
aber mein größtes Problem ist, wenn ich eine Zahl hinzufüge, sagen wir „100“, sieht meine Liste jetzt wie folgt aus:
Die einzelne Spalte, nach der ich sortieren möchte, „Test-ID“, enthält Zeichenfolgen, Ganzzahlen und Doppelzahlen.
Ich habe viele Dinge ausprobiert, einschließlich einer Methode, die jedes Mal aufgerufen wird, wenn eine Taste gedrückt wird:
mit einer Referenz in einem Button klicken als
aber dies löst einen Laufzeitfehler aus, da es als Mausereignis registriert wird, was für mich Sinn macht.
System .InvalidCastException: „Objekt vom Typ „System.Windows.Forms.MouseEventArgs“ kann nicht in den Typ „System.Windows.Forms.DataGridViewSortCompareEventArgs“ umgewandelt werden.“
und Ich habe sogar nur eine Zeile ausprobiert (diese war der Grund, weshalb ich überhaupt die Bestellung aufgegeben habe)
Im Moment bin ich etwas ratlos und versuche, in die richtige Richtung zu weisen
Code: Select all
001.15
1
2
3
some
string
Code: Select all
001.15
1
100
2
3
some
string
Ich habe viele Dinge ausprobiert, einschließlich einer Methode, die jedes Mal aufgerufen wird, wenn eine Taste gedrückt wird:
Code: Select all
private void SortDVG(object sender, DataGridViewSortCompareEventArgs e)
{
if (e.Column.Index == 0)
{
e.SortResult = int.Parse(e.CellValue1.ToString()).CompareTo(int.Parse(e.CellValue2.ToString()));
e.Handled = true;
}
}
Code: Select all
SortDVG(dataGridView1, (DataGridViewSortCompareEventArgs)e);
System .InvalidCastException: „Objekt vom Typ „System.Windows.Forms.MouseEventArgs“ kann nicht in den Typ „System.Windows.Forms.DataGridViewSortCompareEventArgs“ umgewandelt werden.“
und Ich habe sogar nur eine Zeile ausprobiert (diese war der Grund, weshalb ich überhaupt die Bestellung aufgegeben habe)
Code: Select all
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);