public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); if (!result) { return(result); } DataTable table = contexte.Tables[GetNomTable()]; bool bOldMode = contexte.IsModeDeconnecte; if (!bOldMode) { contexte.BeginModeDeconnecte(); } ArrayList lst = new ArrayList(table.Rows); foreach (DataRow row in lst) { if (row.RowState == DataRowState.Deleted) { CRelationDossierSuivi_Element relation = new CRelationDossierSuivi_Element(row); relation.VersionToReturn = DataRowVersion.Original; if (relation.RelationParametre_TypeElement.SuppressionAutomatique && relation.DossierSuivi.Row.RowState != DataRowState.Deleted) { bool bIsRemplace = false; foreach (CRelationDossierSuivi_Element rel in relation.DossierSuivi.RelationsElements) { if (rel.RelationParametre_TypeElement.Id == relation.RelationParametre_TypeElement.Id) { bIsRemplace = true; break; } } if (!bIsRemplace) { result = relation.DossierSuivi.Delete(); if (!result) { return(result); } } } } } if (!bOldMode) { contexte.EndModeDeconnecteSansSauvegardeEtSansReject(); } return(result); }