Datagridview (einfach befüllt) mit Wertebearbeitung - Datum zuweisen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Datagridview (einfach befüllt) mit Wertebearbeitung - Datum zuweisen

    Moin!

    ich habe ein einfaches Datagridview erstellt für eine Wertebearbeitung.



    Die Daten werden einfach zugewiesen und später auch ausgelesen.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Windows.Forms
    2. Imports System.Data
    3. Imports System.Collections
    4. Public Class frm_GsewGenehmigung_EditTags
    5. Private _Data As New Dictionary(Of String, String)
    6. Public Sub New(Data As Dictionary(Of String, String))
    7. ' Dieser Aufruf ist für den Designer erforderlich.
    8. InitializeComponent()
    9. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    10. _Data = Data
    11. End Sub
    12. Public ReadOnly Property Tags2Set() As Dictionary(Of String, String)
    13. Get
    14. Return _Data
    15. End Get
    16. End Property
    17. ''' <summary>
    18. ''' Abfangen von Fehlern in der Befüllung - Projekt
    19. ''' </summary>
    20. Private Sub DataGridView_DataError(ByVal sender As Object,
    21. ByVal e As DataGridViewDataErrorEventArgs) _
    22. Handles DataGridView.DataError
    23. MessageBox.Show("Fehler aufgetreten " _
    24. & e.Context.ToString())
    25. If (e.Context = DataGridViewDataErrorContexts.Commit) _
    26. Then
    27. MessageBox.Show("Fehler übergeben (commit)")
    28. End If
    29. If (e.Context = DataGridViewDataErrorContexts _
    30. .CurrentCellChange) Then
    31. MessageBox.Show("Zell wechsel")
    32. End If
    33. If (e.Context = DataGridViewDataErrorContexts.Parsing) _
    34. Then
    35. MessageBox.Show("Parsing-Fehler")
    36. End If
    37. If (e.Context =
    38. DataGridViewDataErrorContexts.LeaveControl) Then
    39. MessageBox.Show("Fehler beim Verlassen des Steuerelementes")
    40. End If
    41. If (TypeOf (e.Exception) Is ConstraintException) Then
    42. Dim view As DataGridView = CType(sender, DataGridView)
    43. view.Rows(e.RowIndex).ErrorText = "ein Fehler"
    44. view.Rows(e.RowIndex).Cells(e.ColumnIndex) _
    45. .ErrorText = "ein Fehler"
    46. e.ThrowException = False
    47. End If
    48. End Sub
    49. Private Sub Data2Grid()
    50. Try
    51. DataGridView.Rows.Clear()
    52. Dim ErrMsgDetail As String = ""
    53. Try
    54. ErrMsgDetail = "Schleifenbeginn"
    55. For Each kvp As KeyValuePair(Of String, String) In _Data
    56. ' Tabelle befüllen
    57. Dim row As ArrayList = New ArrayList From {
    58. kvp.Key.ToString,
    59. ""
    60. }
    61. DataGridView.Rows.Add(row.ToArray)
    62. Next
    63. Catch ex As Exception
    64. MessageBox.Show("Fehler beim Datensatz auslesen (Spalte:= " & ErrMsgDetail & ")" & Environment.NewLine & ex.ToString)
    65. End Try
    66. Catch ex As Exception
    67. MessageBox.Show("Fehler beim Befüllen der Datentabelle'" & Environment.NewLine & ex.ToString, "Fehler in Anwendung", MessageBoxButtons.OK, MessageBoxIcon.Error)
    68. End Try
    69. End Sub
    70. Private Sub frm_EditGenehmigungTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    71. Data2Grid()
    72. End Sub
    73. Private Sub bt_Clipboard_Click(sender As Object, e As EventArgs) Handles bt_Clipboard.Click
    74. Dim Msg As String = ""
    75. For Each kvp As KeyValuePair(Of String, String) In _Data
    76. Msg &= kvp.Key.ToString() & Environment.NewLine
    77. Next
    78. My.Computer.Clipboard.SetText(Msg)
    79. MessageBox.Show("Tags der Word-Dokumente im Zwischenspeicher", "Administration", MessageBoxButtons.OK, MessageBoxIcon.Information)
    80. End Sub
    81. Private Sub bt_Anwenden_Click(sender As Object, e As EventArgs) Handles bt_Anwenden.Click
    82. Dim Result As New Dictionary(Of String, String)
    83. Dim xRow As Integer = 0
    84. For Each Zeile As DataGridViewRow In DataGridView.Rows
    85. Dim Key As String = DataGridView.Rows(xRow).Cells(0).Value
    86. Dim Value As String = DataGridView.Rows(xRow).Cells(1).Value
    87. If String.IsNullOrEmpty(Value) = False Then Result.Add(Key, Value)
    88. xRow = xRow + 1
    89. Next
    90. _Data = Result
    91. Me.Close()
    92. End Sub
    93. End Class



    Hier nun mein Wunsch und die Frage, ob es (wie) geht oder alles nur ein Wunschgedanke bleibt.

    1.) Wenn ich eine Zelle (2. Spalte) für die Bearbeitung anklicke sind hierfür in der Regel 2-3 Klicks erforderlich - geht das auch einfacher?
    2.) Bei einigen Zellen sind Datumsangaben zu hinterlegen. Kann man die Eingabe irgendwie vereinachen? Zum Beispiel, dass dort ein Kalender auftauscht oder ein Eingabefeld für Datumsangaben?

    Gruß Jan
    1.) Sobald Du die Zelle markiert hast (1. Klick), kannst Du schon anfangen zu schreiben. Du musst Dich nicht in den Edit-Modus reinklicken.*
    2.) Geht, ist aber ziemlich aufwendig, siehe NUD-Column-Thread; einfacher: Du packst einen Kalender daneben, und sobald man ein Datum im Kalender wählt/anklickt, wird dieses in die Zelle reingeschrieben. Musst dann noch selbst festlegen, ob das nur geschehen soll, wenn auch die 2. Spalte angewählt wird und ggf. nur, wenn noch kein Datum drinsteht.

    *Wenn Du es aber für die Optik unbedingt zu brauchen scheinst:

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    2. DataGridView1.BeginEdit(True)
    3. End Sub

    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.