Hi,
Ich habe eine DataGridView. In dieser View mache ich Eingaben im EditMode. Diese Eingaben will ich prüfen und entweder ablehnen oder ggfs. annehmen und korrekt formatieren.
Dazu habe ich das CellValidating Event ausgewählt, weill ich da über e.FormattedValue Zugriff auf den eingegebenen Zelleninhalt habe.
Die Prozedur VerifyCell(i, j, NewValue) prüft den neuen Zelleninhalt und liefert (via ByRef) den entsprechend veränderten Zelleninhalt zurück.
So sieht das Coding aus:
So sieht das Ergebnis aus: die originalen Eingaben werden NICHT verändert.
Die Spalte Valuta ist in der Dgv als Datum ("d") definiert ... und natürlich habe ich NewValue mit Tostring("dd.MM.yyyy") in die gewünsche Form gebracht. Ähnliches gilt für die Dezimale Spalte "Debit".
Egal was ich mache ... die Eingaben werden nicht angepasst. Aus irgendeinem Grund kommt mein NewValue in der Dgv nicht an ...
Ich hoffe, ich habe mein Problem genügend klar machen können. Wie kann ich in der CellValidating Routine den Zelleninhalt formattieren ....
LG
Petger
Ich habe eine DataGridView. In dieser View mache ich Eingaben im EditMode. Diese Eingaben will ich prüfen und entweder ablehnen oder ggfs. annehmen und korrekt formatieren.
Dazu habe ich das CellValidating Event ausgewählt, weill ich da über e.FormattedValue Zugriff auf den eingegebenen Zelleninhalt habe.
Die Prozedur VerifyCell(i, j, NewValue) prüft den neuen Zelleninhalt und liefert (via ByRef) den entsprechend veränderten Zelleninhalt zurück.
So sieht das Coding aus:
VB.NET-Quellcode
- Private Sub DgvLogRecords_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DgvLogRecords.CellValidating
- LblMessage.Text = ""
- 'Get indexes
- Dim i = e.RowIndex
- If i = -1 Then Exit Sub
- Dim j = e.ColumnIndex
- If j = itmMaintenanceCategory.Index Then Exit Sub
- 'Edit new value (other than Category)
- Dim NewValue = e.FormattedValue.ToString
- Dim ret = VerifyCell(i, j, NewValue) 'NewValue is defined as ByRef
- If ret <> "" Then 'ret is the message if not valid
- LblMessage.Text = ret
- DgvLogRecords.CancelEdit() 'restores previous value
- Exit Sub
- End If
- 'Format Cell - DOES NOT WORK
- DgvLogRecords.Item(j, i).Value = NewValue 'New Value is dd.MM.yyyy or "n2"
- End Sub
So sieht das Ergebnis aus: die originalen Eingaben werden NICHT verändert.
Die Spalte Valuta ist in der Dgv als Datum ("d") definiert ... und natürlich habe ich NewValue mit Tostring("dd.MM.yyyy") in die gewünsche Form gebracht. Ähnliches gilt für die Dezimale Spalte "Debit".
Egal was ich mache ... die Eingaben werden nicht angepasst. Aus irgendeinem Grund kommt mein NewValue in der Dgv nicht an ...
Ich hoffe, ich habe mein Problem genügend klar machen können. Wie kann ich in der CellValidating Routine den Zelleninhalt formattieren ....
LG
Petger