//--------------------------------------------------- public void AppliqueRestrictions( CRestrictionUtilisateurSurType restrictionSurObjetEdite, CListeRestrictionsUtilisateurSurType listeRestrictions, IGestionnaireReadOnlySysteme gestionnaireReadOnly) { m_panelSousFormulaire.AppliqueRestrictions( restrictionSurObjetEdite, listeRestrictions, gestionnaireReadOnly); m_restriction = restrictionSurObjetEdite.Clone() as CRestrictionUtilisateurSurType;; m_listeRestrictions = listeRestrictions.Clone() as CListeRestrictionsUtilisateurSurType; m_gestionnaireReadonlySystem = gestionnaireReadOnly; }
//--------------------------------------------------- protected override CResultAErreur MyInitChamps(CCustomizableListItem item) { CResultAErreur result = base.MyInitChamps(item); if (item != null && item.Tag != null) { m_panelSousFormulaire.SetElementEdite(item.Tag); if (m_restriction != null && !IsCreatingImage) { CRestrictionUtilisateurSurType rest = m_restriction.Clone() as CRestrictionUtilisateurSurType; rest.ApplyToObjet(item.Tag); m_panelSousFormulaire.AppliqueRestrictions( rest, m_listeRestrictions, m_gestionnaireReadonlySystem); } //Stock l'aspect du formulaire à l'initialisation if (m_donneesAInitialisation == null) { m_donneesAInitialisation = new CDonneesSpecifiquesControleDansCustomList(); CUtilDonneesSpecifiquesDansCustomList.SaveDonneesControle(this, m_donneesAInitialisation); } if (item.DonneesControles == null || item.DonneesControles.IsEmpty) { item.DonneesControles = m_donneesAInitialisation; } } if (IsCreatingImage) { m_panelSousFormulaire.BackColor = ColorInactive; } else { m_panelSousFormulaire.BackColor = BackColor; } return(result); }
/////////////////////////////////////////////////// public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession); //Annule les modifications sur les champs interdits en modification DataTable table = contexte.Tables[GetNomTable()]; //Objet témoin pour vérifier les valeurs non affectées CRelationElementAChamp_ChampCustom relTemoin = null; if (IdVersionDeTravail != null) //Dans les versions, on ne stocke pas les créations de valeurs nulles { relTemoin = (CRelationElementAChamp_ChampCustom)contexte.GetNewObjetForTable(table); relTemoin.CreateNewInCurrentContexte(); } if (table != null && session != null) { IInfoUtilisateur user = session.GetInfoUtilisateur(); if (user != null) { ArrayList lst = new ArrayList(table.Rows); IElementAChamps lastElt = null; CRestrictionUtilisateurSurType restDeBase = null; CRestrictionUtilisateurSurType restAppliquee = null; foreach (DataRow row in lst) { CRelationElementAChamp_ChampCustom rel = (CRelationElementAChamp_ChampCustom)contexte.GetNewObjetForRow(row); if (row.RowState == DataRowState.Added && relTemoin != null) { if (relTemoin.Valeur != null && relTemoin.Valeur.Equals(rel.Valeur) || relTemoin.Valeur == null && relTemoin.Valeur == null) { rel.CancelCreate(); } } if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) { if (restDeBase == null) { Type tp = rel.ElementAChamps.GetType(); restDeBase = user.GetRestrictionsSur(tp, contexte.IdVersionDeTravail); } if (restDeBase != null && rel.ElementAChamps.Equals(lastElt)) { restAppliquee = restDeBase.Clone() as CRestrictionUtilisateurSurType; } //Vérifie qu'on a le droit if (!rel.ElementAChamps.Equals(lastElt) && restAppliquee != null) { restAppliquee.ApplyToObjet(rel.ElementAChamps); } lastElt = rel.ElementAChamps; if (restAppliquee != null) { ERestriction restChamp = restAppliquee.GetRestriction(rel.ChampCustom.CleRestriction); if ((restChamp & ERestriction.ReadOnly) == ERestriction.ReadOnly) { row.RejectChanges(); } } } } } } if (relTemoin != null) { relTemoin.CancelCreate(); } return(result); }