hallo
wie das datagrid sortiert wird hängt vom verwendeten algorithmus ab. zahlen sortiert man ja anders als zeichenketten. und zeichenketten können ebenfalls verschiedenartig sortiert werden.
Beispiel (Zeichenkette):
1
15
2
33
38888
45
Beispiel (Zahlen):
1
2
15
33
45
38888
scheinbar ist der default-sortierer des gridviews nicht für deinen zweck geeignet. ich vermute er sortiert den inhalt als zeichenkette, was du aber nicht willst.
du kannst dir jederzeit einen eigenen sortierer schreiben, der den inhalt genau so sortiert, wie du es willst. dazu gibt es die IComparer-Schnittstelle. Erstelle eine neue Klasse, die davon erbt:
public class IntSorter: IComparer {
int IComparer.Compare( Object x, Object y ) {
//Entscheidungslogik
}
}
diese klasse übergibst du an das gridview beim sortieren:
IComparer myComparer = new IntSorter();
dataGridView1.Sort( myComparer );
in der entscheidungslogik musst du die beiden objekte entsprechend vergleichen und dann -1 (für kleiner), 0 ( für gleich) oder 1 (für größer) zurückgeben.
Die Objekte x und y müssten vom Typ DataGridRow sein, wenn ich mich recht entsinne. also casten, auf die spalte deiner wahl zugreifen, wert auslesen und anhand des wertes -1, 0 oder 1 zurückgeben.
nicht getestet:
public class IntSorter: IComparer {
int IComparer.Compare( Object x, Object y ) {
DataGridRow dgr1 = (DataGridRow)x;
DataGridRow dgr2 = (DataGridRow)y;
int v1 = Int32.parse(dgr1["spalte"]);
int v2 = Int32.parse(dgr2["spalte"]);
if(v1\>v2) return 1;
return v1==v2 ? 0 : -1;
}
}