DataGridView.DefaultCellStyle.Format

  • VB6

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    DataGridView.DefaultCellStyle.Format

    Guten Tag

    Ich sitze an einem Problem und finde einfach die Herangehensweise nicht.

    Folgendes, ich habe ein DatagridView Feld "Währung" und ein DatagridView Feld "Betrag".

    Wenn die Währung EUR ist, soll Betrag so "###,###.00"" €" formatiert werden

    Wenn die Währung SFR ist, soll Betrag so "###,###.00"" Fr." formatiert werden

    Ich kann die korrekte Zelle einfärben, aber nicht formatieren.

    Siehe Code:

    VB.NET-Quellcode

    1. For counter = 0 To (PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Rows.Count - 1)
    2. 'MsgBox("Durchlauf Nummer: " & counter)
    3. Select Case PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Rows(counter).Cells("sql_tbl_preisliste_waehrung").Value.ToString
    4. Case "SFR"
    5. 'MsgBox("Diese Zeile wäre SFR")
    6. With PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView
    7. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).Style.BackColor = Color.Blue
    8. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).Style.NullValue = "k.A."
    9. 'PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).DataGridView.DefaultCellStyle.Format = "###,###.00"" Fr.""" :-(
    10. End With
    11. Case "EUR"
    12. 'MsgBox("Diese Zeile wäre EUR")
    13. With PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView
    14. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).Style.BackColor = Color.Red
    15. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).Style.NullValue = "k.A."
    16. 'PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).DataGridView.DefaultCellStyle.Format = "###,###.00"" €""" :-(
    17. End With
    18. End Select
    19. Next

    Kann mir jemand ein Typ geben?

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Vielen Dank für die schnelle Antwort.

    Du hast mein Problem überlesen:

    Folgendes, ich habe ein DatagridView Feld "Währung" und ein DatagridView Feld "Betrag".
    Wenn die Währung EUR ist, soll Betrag so "###,###.00"" €" formatiert werden.
    Wenn die Währung SFR ist, soll Betrag so "###,###.00"" Fr." formatiert werden

    Nachtrag: Das Feld Betrag ist nur eine Zahl, ohne Währungszeichen.

    Ob c oder meine Version ist egal! Ich muss ja das Kürzel der Währung anpassen.

    Das Problem ist das:

    VB.NET-Quellcode

    1. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).Style.NullValue = "k.A." '(Hier wird nur die korrekte Zelle formatiert.)
    2. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item(8, counter).DataGridView.DefaultCellStyle.Format = "###,###.00"" Fr.""" '(Hier werden ALLE Zahlenfelder mit Fr. formatiert????)


    Besten Dank

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    VB.Net oder VB6?
    Für den Code solltest du die entsprechenden Formatierungen verwenden.

    Hier was ich mir aus den Infos zusammengereimt habe, ist auch völlig ungestestet und VB.Net.

    VB.NET-Quellcode

    1. For Each row As DataGridViewRow In dataGridView1.Rows
    2. For i As Integer = 0 To dataGridView1.ColumnCount - 1
    3. If CStr(row.Cells(i).Value) = "String(Wert)" Then
    4. row.DefaultCellStyle.Format = "c2"
    5. row.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE);")
    6. Else
    7. row.DefaultCellStyle.Format = "c2"
    8. row.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-CH")
    9. End If
    10. Next
    11. Next


    Mit VB6 kann ich gar nicht dienen.
    @Laski Arbeitest Du tatsächlich mit VB6 :?:
    Ändere den Titel dieses Deines Threads, dalls Du mit VB.NET arbeitest.
    Dann teste folgendes Programm.
    Form mit einem Button und 4 Labeln:

    VB.NET-Quellcode

    1. Imports System.Globalization
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. Dim cultures() As CultureInfo = {New CultureInfo("en-US"), _
    5. New CultureInfo("fr-FR"), _
    6. New CultureInfo("it-IT"), _
    7. New CultureInfo("de-DE")}
    8. Dim preis As Double = 12345.67
    9. Label1.Text = preis.ToString("c", cultures(0))
    10. Label2.Text = preis.ToString("c", cultures(1))
    11. Label3.Text = preis.ToString("c", cultures(2))
    12. Label4.Text = preis.ToString("c", cultures(3))
    13. End Sub
    14. End Class
    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!

    Laski schrieb:

    Wenn die Währung EUR ist, soll Betrag so "###,###.00"" €" formatiert werden.
    Wenn die Währung SFR ist, soll Betrag so "###,###.00"" Fr." formatiert werden
    Ups, ja, habich nicht richtig verstanden.
    also dann musst du das dgv_CellFormatting-Event abonnieren, und da e.FormattedValue (oder e.Value?) in richtiger Weise hinmachen.
    Inne Tuts habich Beispiel dazu, aber vergessen, wie das Tut hiess.
    Ausserdem war das nicht mit Währungen, sondern ich hab eine ImageCell formatiert, sodass sie für einen ImageIndex eine Bitmap anzeigtete.
    ah - hier: Icons im DatagridView und das CellFormatting-Event
    Der Schlag mit den Zaunpfahl hat mir die Augen geöffnet. Besten Dank

    VB.NET-Quellcode

    1. If PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Rows(counter).Cells("sql_tbl_preisliste_waehrung").Value.ToString = "SFR" Then
    2. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_ek", counter).Style.Format = "###,###.00"" Fr."
    3. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_vk", counter).Style.Format = "###,###.00"" Fr."
    4. End If
    5. If PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Rows(counter).Cells("sql_tbl_preisliste_waehrung").Value.ToString = "EUR" Then
    6. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_ek", counter).Style.Format = "###,###.00"" €"
    7. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_vk", counter).Style.Format = "###,###.00"" €"
    8. End If
    9. Next

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Laski Falls weitere Währungen dazukommen, dann gleich so:

    Visual Basic-Quellcode

    1. Dim waehrung = PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Rows(counter).Cells("sql_tbl_preisliste_waehrung").Value.ToString
    2. Dim format As String = ""
    3. If waehrung = "SFR" Then
    4. format = "###,###.00"" Fr."
    5. Else If waehrung = "EUR" Then
    6. format = "###,###.00"" €"
    7. Else
    8. MsgBox("Neue Währung")
    9. End If
    10. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_ek", counter).Style.Format = format
    11. PREISLISTEN_B_SQL_V00_ALLE_Formular.DataGridView.Item("sql_tbl_preisliste_preis_vk", counter).Style.Format = format
    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!