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 !!!
:-)