Hallo zusammen,
gegeben ist ein DGV mit einer TextBoxColumn. In der Spalte stehen die Werte "1", "-1", und "2" drin. Durch das Klicken auf den Spaltenkopf werden die Werte sortiert. Aufsteigende Sortierung (von oben nach unten): "1", "-1","2". Absteigende Sortierung: "2", "-1", "1".
Ich hätte erwartet, dass hier zeichenweise sortiert wird, also "-", "1", "2", dem ist aber nicht so. Nach welcher Regel wird hier sortiert?
Ich bin mir relativ sicher, dass dort die "normale" Vergleichsfunktion für Strings aufgerufen wird.
siehe Compare(String, String) (Beachte primär die die Dokumentation unter "Notes to Callers")
Danke für den Hinweis dannoe. Die Methode CompareOrdinal() ist die, die ich brauche. Dennoch frage ich mich, nach welcher Regel Compare() sortiert - gerade bei positiven und negativen Zahlen als strings. Ein Blick in den Quellcode von String.Compare() führt zu einem PInvoke
[System.Security.SecurityCritical] // auto-generated
[ResourceExposure(ResourceScope.Process)]
[DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
[SuppressUnmanagedCodeSecurity]
private static extern int InternalCompareString(IntPtr handle, IntPtr handleOrigin, String localeName, String string1, int offset1, int length1,
String string2, int offset2, int length2, int flags);
Weiß jemand woher InternalCompareString() kommt und was es macht?
Gut möglich das er rein alphanumerisch sortiert und Sonderzeichen (in diesem Fall '-') rausfiltert.
Warum verwendest du denn überhaupt Strings, wenn es sich doch um Zahlen handelt?
Weeks of programming can save you hours of planning
Vielleicht weiß ja das Grid von irgendwoher dass es sich um Zahlen handelt und sortiert dementsprechend auch numerisch.