Anführungszeichen im Datagridview entfernen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Option Strict On! .Split() akzeptiert so keine Strings. Option-Strict-On-konform muss es heißen: SplitLine = TextLine.Split(";"c)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Svenundmel Stelle bitte gefälligst den Code Anführungszeichen im Datagridview entfernen
    so dar, dass wir ihn als Code lesen können.
    Nutze in der Erweiterten Antwort den Vorschaubutton, nutze den Bearbeiten-Button unter dem abgesendeten Post und nutze den Quellcode-Button zur Anzeige des editierten Posts als Code.
    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!
    Das ist nicht der richtige Weg. Es gibt wesentlich schönere Varianten das zu lösen. @RodFromGermany hat dir bereits erklärt wie es geht.

    Hier mal ein Beispiel wie ich dein Problem gelöst hätte:

    Spoiler anzeigen

    Zunächst hätte ich eine Methode geschrieben, um das DatagridView zu formatieren (Diese Methode wird einmalig beim Aufrufen der Form ausgeführt):
    (ich bin kein Freund davon, viel Code ins FormLoad zu schreiben, aber wenn du das wenig drinstehen hast, dann da rein)

    Code

    VB.NET-Quellcode

    1. Private Sub FormatDatagrid()
    2. DataGridView1.Columns.Clear()
    3. DataGridView1.AllowUserToAddRows = False
    4. DataGridView1.AllowUserToDeleteRows = False
    5. DataGridView1.AllowUserToOrderColumns = False
    6. DataGridView1.AllowUserToResizeColumns = False
    7. DataGridView1.ShowEditingIcon = False
    8. DataGridView1.DataSource = Nothing
    9. DataGridView1.ColumnHeadersVisible = False
    10. DataGridView1.RowHeadersVisible = True
    11. DataGridView1.AutoGenerateColumns = False
    12. DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
    13. DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    14. DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
    15. DataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect
    16. DataGridView1.MultiSelect = False
    17. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "VerladeTor", .Name = "VerladeTor", .Frozen = True, .ReadOnly = True, .HeaderText = "Verlade-Tor"})
    18. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "ZielReg", .Name = "ZielReg", .Frozen = True, .ReadOnly = True, .HeaderText = "Zielregal"})
    19. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "KFZKennzeichen", .Name = "KFZKennzeichen", .Frozen = False, .ReadOnly = True, .HeaderText = "KFZ-Kennzeichen"})
    20. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "PalIST", .Name = "PalIST", .Frozen = False, .ReadOnly = True, .HeaderText = "Palette IST"})
    21. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "PalSOLL", .Name = "PalSOLL", .Frozen = False, .ReadOnly = True, .HeaderText = "Palette SOLL"})
    22. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "Bemerkung_Dispo", .Name = "Bemerkung_Dispo", .Frozen = False, .ReadOnly = True, .HeaderText = "Bemerkung Disposition"})
    23. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "AnkunftIST", .Name = "AnkunftIST", .Frozen = False, .ReadOnly = True, .HeaderText = "Ankunft IST"})
    24. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "BeginnVerladung", .Name = "BeginnVerladung", .Frozen = False, .ReadOnly = True, .HeaderText = "Beginn Verladung"})
    25. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "MinAuftragsPos", .Name = "MinAuftragsPos", .Frozen = False, .ReadOnly = True, .HeaderText = "Mindest Auftragspositionen"})
    26. DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "PlanAnkunft", .Name = "PlanAnkunft", .Frozen = False, .ReadOnly = True, .HeaderText = "Plan Ankunft"})
    27. DataGridView1.Columns("AnkunftIST").DefaultCellStyle.Format = "HH:mm"
    28. DataGridView1.Columns("PlanAnkunft").DefaultCellStyle.Format = "HH:mm"
    29. End Sub


    Anschließend hätte ich mir eine Klasse angelegt um deine Daten einzulesen (Stichwort "Objektorientierte Programmierung")
    ProjektmappenExplorer (Rechtsklick auf Projekt) -> Hinzufügen -> Klasse...


    Code

    VB.NET-Quellcode

    1. Public Class Warenausgang
    2. Public Property VerladeTor As String
    3. Public Property ZielReg As String
    4. Public Property KFZKennzeichen As String
    5. Public Property PalIST As String
    6. Public Property PalSOLL As String
    7. Public Property Bemerkung_Dispo As String
    8. Public Property AnkunftIST As String
    9. Public Property BeginnVerladung As Date?
    10. Public Property MinAuftragsPos As Integer
    11. Public Property PlanAnkunft As Date?
    12. End Class


    Abschließend hätte ich deine Funktion zum Laden überarbeitet:

    Code

    VB.NET-Quellcode

    1. Private Sub DatenEinlesen(sender As Object, e As EventArgs)
    2. Dim FileName As String = "C:\Temp\WA.csv"
    3. Dim Zeilen As New List(Of Warenausgang)
    4. If IO.File.Exists(FileName) Then
    5. Using objReader As New IO.StreamReader(FileName)
    6. Zeilen = objReader.ReadToEnd.Split(vbCrLf, vbNewLine, Chr(10), Chr(13)).Where(Function(n) Not String.IsNullOrWhiteSpace(n)).Select(Function(n)
    7. Dim SplittedText As String() = n.Split(";")
    8. Return New Warenausgang With {.VerladeTor = SplittedText(0).Replace(Chr(34), String.Empty),
    9. .ZielReg = CStr(SplittedText(1).Replace(Chr(34), String.Empty)),
    10. .KFZKennzeichen = CStr(SplittedText(2).Replace(Chr(34), String.Empty)),
    11. .PalIST = CStr(SplittedText(3).Replace(Chr(34), String.Empty)),
    12. .PalSOLL = CStr(SplittedText(4).Replace(Chr(34), String.Empty)),
    13. .Bemerkung_Dispo = CStr(SplittedText(5).Replace(Chr(34), String.Empty)),
    14. .AnkunftIST = CStr(SplittedText(6).Replace(Chr(34), String.Empty)),
    15. .BeginnVerladung = If(IsDate(SplittedText(7).Replace(Chr(34), String.Empty)), CDate(SplittedText(9).Replace(Chr(34), String.Empty)), CType(Nothing, Date?)),
    16. .MinAuftragsPos = CInt(SplittedText(8).Replace(Chr(34), String.Empty)),
    17. .PlanAnkunft = If(IsDate(SplittedText(9).Replace(Chr(34), String.Empty)), CDate(SplittedText(9).Replace(Chr(34), String.Empty)), CType(Nothing, Date?))}
    18. End Function).ToList
    19. objReader.Close()
    20. End Using
    21. DataGridView1.DataSource = Zeilen
    22. Else
    23. MsgBox("File Does Not Exist")
    24. End If
    25. End Sub




    Edit: Wenn sich jemand beschwert, dass ich mein Control nicht umbenannt habe: Ich übernehme grundsätzlich immer die Benamung aus dem Original. Selbes gilt für Option Strict On.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Yanbel“ ()

    @petaod Jou.
    @Svenundmel Wenn Du die Syntax der CSV-Datei kennnst, musst Du die exakt so abarbeiten und nur das nehmen, was Du brauchst und den Rest ignorieren.
    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!