CancelEdit su bindingSource [RISOLTO]

di By65Franco il
3 risposte

Salve a tutti

        // SERVICES - RETURN FROM ADD/UPDATE RECORD
        private void BtnReturnService_Click(object sender, EventArgs e)
        {
            // end edit
            this.tblUserBindingSource.EndEdit();
            this.tblServiceBindingSource.EndEdit();
            // check pending changes
            if (this.dataSetServices.HasChanges())
            {
                if (MessageBox.Show(@"Do you want to abandon pending changes?", 
                                    "Info",MessageBoxButtons.YesNo,MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    // abandon the changes
                    this.dataSetServices.RejectChanges();
                    //this.tblUserBindingSource.CancelEdit();
                    //this.tblServiceBindingSource.CancelEdit();
                }
                else { return; }
            }
            // exit tabpage Editing mode and return home tabpage
            MyExitEditingMode();
        }

Con questo metodo si abbandonano le modifiche in sospeso sui rispettivi bindingSource per le due tabelle TblService e TblUser Relazionate uno a molti

La form che ospita queste due sorgenti contiene :

  • tante TextBox quanti sono le colonne della tabella TblService che sono direttamente associate nelle proprietà del dataBinding con la tblServiceBindingSource - NomeColonnaTabella
  • una dataGridView  popolata dai records relazionati alla tabella TblUser con la fKTblUserTblServiceBindingSource che è la chiave esterna di relazione

Tutto funziona correttamente sia in fase di inserimento , aggiornamento ed eliminazione records.


Il problema si verifica quando si decide di abbandonare la form e di non salvare le modifiche in sospeso.

con il  tblUserBindingSource.CancelEdit() e tblServiceBindingSource.CancelEdit() ,  cancella le modifiche in sospeso solo di tblUserBindingSource e non riesco a capire perchè non cancella anche le modifiche in tblServiceBindingSource

A questo punto mi sono rifugiato e risolto momentaneamente, con dataSetServices.RejectChanges(); e in questo caso tutto funziona come si deve.

Dove sbaglio con il cancelEdit ?
E' opportuno usare il RejectChanges del dataset ? 

Grazie !!!

:-)

3 Risposte

  • [RISOLTO]

    Grazie lo stesso ;-)

  • 24/09/2023 - Philcattivocarattere ha scritto:


    con dataSetServices.RejectChanges(); e in questo caso tutto funziona come si deve.

    22/09/2023 - By65Franco ha scritto:


    con dataSetServices.RejectChanges(); e in questo caso tutto funziona come si deve.

    Tra l'altro ho letto tra le tante documentazioni ricercate sul supporto Microsoft, che il CancelEdit in particolari condizioni non potrebbe avere effetto non riflettendo il metodo in tutte le classi dal dataset al bindingSource al tableAdapter etc… special modo se esistono anche le relazioni tra tabelle e/o in altri casi che ora non ricordo bene.

    La mia domanda era soprattutto per capire se l'approccio era corretto prima di proseguire per una strada magari del tutto sbagliata.

Devi accedere o registrarti per scrivere nel forum
3 risposte