Laden...

DataGridView CellValidating

Erstellt von .unreal vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.479 Views
.unreal Themenstarter:in
563 Beiträge seit 2004
vor 17 Jahren
DataGridView CellValidating

Hallo Community

Ich habe ein Problem mit dem CellValidating Event des DataGridView. Der Code ist leider in VB.NET, ich poste diesen trotzdem hier, obwohl mycsharp eine C# Seite ist, da dieses Forum einfach nur super ist 🙂


    Private Sub dgvResources_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvResources.CellValidating
        If (dgvResources.Columns(e.ColumnIndex).Name = "resource") Then
            If (_bsResources.Find("name", e.FormattedValue) > -1) Then
                dgvResources.Rows(e.RowIndex).ErrorText = "Diese Anwendung ist bereits vorhanden."
                e.Cancel = True
            Else
                dgvResources.Rows(e.RowIndex).ErrorText = String.Empty
                e.Cancel = False
            End If
        End If
    End Sub

Bei diesem Code kriege ich eine InvalidOperationException mit dem Text "Operation did not succeed because the program cannot commit or quit a cell value change."

Warum lässt sich sich einen Cell-Value nicht verändern?! Sobald der ausgewählte Wert nicht vorhanden ist, wird e.Cancel auf false gesetzt. Falls ESC gedrückt wird, habe ich im CellEndEdit event den error der row auf "" gesetzt.

Der Benutzer soll über eine ComboBox aus einem Applikationsppol eineauslesen können, allerdings darf jede nur einmal hinzugefügt werden. Ich dachte ich packe diese Validierung in den CellValidating Event. Ist das der falsche Weg?

Gruss,
.unreal

.unreal Themenstarter:in
563 Beiträge seit 2004
vor 17 Jahren

Ich habe es über das BindingSource gelöst:


        If _bsResources.Current.Row.RowState = Data.DataRowState.Detached Then
            .... überprüfen und so
        End If

Lustigerweise ist dgvResources.Rows(e.RowIndex).IsNewRow immer False, weil vor dem Validieren gleich ne neue Row im DataGridView erzeugt wird, da sehe ich den Sinn nicht ganz dahinter!

Scheint mir etwas komisch, dass man solche umwege gehen muss, wäre darum trotzdem noch froh, wenn jemand seine Ideen posten würde.

.unreal