String nach Double mit Punkt Trennzeichen
- C#
- .NET (FX) 4.5–4.8
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Amro.
-
-
@Amro Formatiere den String mit englischer Kultur:
docs.microsoft.com/de-de/dotne…tem_String_System_Object_
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Hallo Rod,
meinst du sowas:
funktioniert leider auch nicht.
Mit Breakpoint wird es in der doubleList richtig angezeigt aber das Grid macht da wieder ein Komme drauß.
Übergebe ich es als String an die Grid, passt es wieder mit den Punkt als Trenner.
Dafür stimmt aber wieder die Sortierung nicht mehr, da hier dann nach String sortiert wird . -
Wenn Du ein String ausgeben willst, dann musst du auch einen String ausgeben.
Oder du läßt den ganzen Thread mit der gewünschten Kultur laufen, oder du setzt die DGV-Spalte auf die gewünschte Kultur.
Hier steht so ziemlich alles drinnen. Googlen hilft manchmal weiter, getestet habe ich da aber nichts. -
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
@RodFromGermany
Dann hab ich wieder ein String in der DataGridView.
Zu mein Vorhaben:
Ich will eine Stückliste erstellen diese kann wiederum Unterstücklisten enthalten.
Beispiel-Struktur:
1
2
2.1
2.2
10
11
Ich will aber später in der Grid Sortieren können deshalb muss der Wert irgendwie Numerisch sein!
Die DataGridView spielt da nicht mit, weil sie den Punkt durch ein Komma ersetzt.
Hab eine datatable gebunden da ist der Punkt noch drin.
Auch in eine Liste bleibt der Punkt noch drin aber sobald die Grid ins spiel kommt, ist es ein Komma.
Punkt muss aber sein, weil es in Stücklisten so gehandhabt wird.
Als String sieht die Sortierung so aus:
1
10
11
2.1
2.2
Das darf nicht sein.
CulterInfo und StringFormat bringt da nicht viel.
Vielleicht geht das mit einer eigenen Sortierung oder sowas.
Bin für jede Lösung offen . -
Bau eine „Unsichtbare“ Spalte mit fortlaufendender Nummerierung ein, nach der dann sortiert wird."Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."
Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
Wie man VisualStudio nutzt? => VisualStudio richtig nutzen -
Amro schrieb:
CulterInfo und StringFormat bringt da nicht viel.
Du hast Dir den Artikel also nicht durchgelesen oder nicht verstanden. Culturinfo auf den Form-Thread oder per Code für die entsprechende DGV-Spalte gesetzt macht ganz genau das was du willst. Jedenfalls wird das da behauptet. -
mrMo schrieb:
Bau eine „Unsichtbare“ Spalte mit fortlaufendender Nummerierung ein, nach der dann sortiert wird.
Ja das hab ich auch so gelöst.
Mir fehlt nur noch das Event mit den ich die Unsichtbare-Spalte Sortieren lasse wenn zBsp. Spalte(2) Sortiert wird.
Ich dachte es gibt eine bessere Lösung vielleicht.
@Dksksm
Doch , aber das hat leider auch nicht geholfen.
Auch das ändern der Spalten.CulturInfo brachte nix.
Mit Thread.Culturinfo probiert , bringt auch nix.
-
Was bedeutet diese Aussage?
Amro schrieb:
Mir fehlt nur noch das Event mit den ich die Unsichtbare-Spalte Sortieren lasse"Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."
Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
Wie man VisualStudio nutzt? => VisualStudio richtig nutzen -
@mrMo
Ich meine das so:
Wie kann ich nach der unsichtbaren Spalte Sortieren, wenn ich den Header einer anderen Spalte klicke.
Sowohl Aufsteigend als absteigend.
Da arbeite ich noch dran (ColumnHeaderMouseClick).
Aber wie gesagt, so würde ich es echt nur machen, wenn es wirklich nicht anders geht.
-
Amro schrieb:
Wie kann ich nach der unsichtbaren Spalte Sortieren, wenn ich den Header einer anderen Spalte klicke.
docs.microsoft.com/de-de/dotne…t?view=windowsdesktop-5.0Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Im moment ist das so gelöst.
Spoiler anzeigen
C#-Quellcode
- ListSortDirection direction = ListSortDirection.Ascending;
- private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
- {
- if (dataGridView.Columns["Col2"].Index == e.ColumnIndex)
- {
- if( direction == ListSortDirection.Ascending)
- {
- direction = ListSortDirection.Descending;
- }
- else
- {
- direction = ListSortDirection.Ascending;
- }
- dataGridView.Sort(dataGridView.Columns["Col5"],direction);
- }
- }
Es muss doch auch anders gehen , ist wieder alles nur rundherum gebaut!
-
Amro schrieb:
Mit Thread.Culturinfo probiert , bringt auch nix.
Dann machst du es falsch, ich habe ein Testprojekt gemacht, sogar mal in VB.Net (was für ein Krampf, sorry ich mache seit Jahren nichts in VB)
VBWinForm00.zip -
Danke für deine Mühe.
Kannst auch in c# machen oder Wpf.
Mir gehts aber nicht nur um die darstellung also Punkt oder Komma.
Das DGV muss auch richtig Sortieren.
Schau dir das nochmal an
String nach Double mit Punkt Trennzeichen -
Amro schrieb:
Mir gehts aber nicht nur um die darstellung also Punkt oder Komma.
Was für Daten, was für eine Spalte, wie formatiert, ...?Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Amro schrieb:
Mir gehts aber nicht nur um die darstellung also Punkt oder Komma.
Das DGV muss auch richtig Sortieren.
Das Sortieren von den Werten darfst du gerne selbst impelmentieren, ist so schwer nun wirklich nicht. Auch dazu gibts reihenweise Googletreffer, inkl. Beispiele von MS Docs.
Da bei mir die Werte vom Datentyp Decimal sind und nicht Text, ist eine Hilfsspalte also nicht notwendig.
Wie konkret du das am Ende umsetzt ist dein Bier. -
Dksksm schrieb:
Da bei mir die Werte vom Datentyp Decimal sind und nicht Text,
Das ist genau das Problem, ich bekomme die Werte als String und muss sie entweder in double oder
decimal konvertieren.
Dann ist es noch eine DataTable die an die Grid gebunden wird oder in eine Foreach schleife in die Grid
eingefügt wird. Somit bekommt die Grid auch eine Sortierung.
Ich häng mal ein kleines Beispiel an mit meinen Daten wie sie mir vorliegen.
Du meinst Spalte Position muss jetzt richtig Sortieren ohne Hilfsspalte und CultureInfo?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Amro“ ()
-
@Amro Die SLN-Datei gehört zum Projekt, obj- und bin-Verzeichnis gehören NICHT in die ZIP-Datei.
====
Was muss ich tun, um Deinen Effekt zu reproduzieren??
Was passiert?
Was soll passieren?
========
Den Strings ist es egal, was da für eine Kultur ist, solange Du lateinische Schriftzeichen verwendest.
C#-Quellcode
- private void LoadStückListe()
- {
- DTStückListe = new DataTable();
- DTStückListe.Columns.Add("Bezeichnung", typeof(string));
- DTStückListe.Columns.Add("Position", typeof(decimal));
- DTStückListe.Columns.Add("Menge", typeof(int));
- DTStückListe.Rows.Add("BG1", 1, 5);
- DTStückListe.Rows.Add("Schraube", 1.1, 20);
- DTStückListe.Rows.Add("UScheibe", 1.2, 20);
- DTStückListe.Rows.Add("BG2", 2, 1);
- DTStückListe.Rows.Add("BG3", 10, 2);
- DTStückListe.Rows.Add("BG3", 20, 3);
- DTStückListe.Rows.Add("BG4", 3, 8);
- DTStückListe.Rows.Add("BG5", 2.5, 1);
- DGV.DataSource = DTStückListe;
- button2.Enabled = true;
- }
C#-Quellcode
- private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
- {
- if (e.Value == null)
- {
- return;
- }
- if (e.ColumnIndex != 6) // FPS
- {
- return;
- }
- double fps = (double)e.Value;
- if (fps > 40)
- {
- DataGridViewCellStyle style = e.CellStyle;
- style.ForeColor = Color.Red;
- style.Font = new Font(style.Font, style.Font.Style | FontStyle.Bold);
- e.CellStyle = style;
- }
- }
Benenne diesen Deinen Thread nach CSHARP um!
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RodFromGermany“ ()
-
Ähnliche Themen
-
conger890 - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Amro (16)
- RodFromGermany (11)
- Dksksm (4)
- mrMo (3)