none
Datagridview zeigt nach CancelEdit nicht richtig an RRS feed

  • Frage

  • Hallo liebe NG,
    wenn ich in meinem DataGridView eine Änderung mit B_SchulungenBindingSource.CancelEdit() rückgängig mache, werden trotzdem die geänderten Daten angezeigt. Erst nach einem Anwendungs-Neustart stimmt es wieder.
    Ich habe eine Master-Detail Verbindung und meine eigene Navigationsleiste. Die Daten im Masterteil werden korrekt angezeigt. Mein DGV hat in zwei Spalten Verknüpfungen zu anderen Tabellen. Ich denke aber, daran kanns nicht liegen. Muss ich die Databinding des DGV neu erstellen? Ich dachte eigentlich, dass die BindingSource das erledigt.

    Vielen Dank und beste Grüsse von Christina

      Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        BereicheBindingSource.AddNew()
        cNavigationsLeiste(Me, False)
        EingabeMoeglich(True)
    
      End Sub
    
      Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
        cNavigationsLeiste(Me, False) 'globale Prozedur Navigationsleiste
        EingabeMoeglich(True)
    
      End Sub
    
      Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        BereicheBindingSource.CancelEdit()
        B_SchulungenBindingSource.CancelEdit()
        cNavigationsLeiste(Me, True)
        EingabeMoeglich(False)
    
      End Sub
    
      Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        BereicheBindingSource.EndEdit()
        BereicheTableAdapter.Update(DsMSchulungen.Bereiche)
        B_SchulungenBindingSource.EndEdit()
        B_SchulungenTableAdapter.Update(DsMSchulungen.B_Schulungen)
        DisplayPosition()
        cNavigationsLeiste(Me, True)
        EingabeMoeglich(False)
    
      End Sub
    Mittwoch, 28. April 2010 13:06

Antworten

  • Hallo,

    CancelEdit bringt bei einem DataGridView in der Regel wenig,
    da dass DataGridView seinerseits beim Verlassen bereits End(Current)Edit aufgerufen hat.

    Damit werden die (Proposed) Werte in der DataTable als Current Werte gekennzeichnet.
    In solchen Fällen solltest Du ein RejectChanges für die DataRow aufrufen,
    damit werden die Originalwerte wieder hergestellt, sofern vorhanden.

    Mehr siehe: Bearbeiten von 'DataViews' (ADO.NET)

    Gruß Elmar

    • Als Antwort markiert sphinxx Donnerstag, 29. April 2010 07:14
    Mittwoch, 28. April 2010 14:52
    Beantworter

Alle Antworten

  • Hallo,

    CancelEdit bringt bei einem DataGridView in der Regel wenig,
    da dass DataGridView seinerseits beim Verlassen bereits End(Current)Edit aufgerufen hat.

    Damit werden die (Proposed) Werte in der DataTable als Current Werte gekennzeichnet.
    In solchen Fällen solltest Du ein RejectChanges für die DataRow aufrufen,
    damit werden die Originalwerte wieder hergestellt, sofern vorhanden.

    Mehr siehe: Bearbeiten von 'DataViews' (ADO.NET)

    Gruß Elmar

    • Als Antwort markiert sphinxx Donnerstag, 29. April 2010 07:14
    Mittwoch, 28. April 2010 14:52
    Beantworter
  • Vielen Dank, so funktioniert's.
      Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        BereicheBindingSource.CancelEdit()
        'Änderungen im DGV rückgängig machen
        Dim dt As DataTable
        For Each dt In DsMSchulungen.Tables
          dt.RejectChanges()
        Next
    
        cNavigationsLeiste(Me, True)
        EingabeMoeglich(False)
    
      End Sub
    Donnerstag, 29. April 2010 07:14