//------------------------------------------------------------ public override CResultAErreur GetValue(object objet, string strPropriete) { CResultAErreur result = CResultAErreur.True; result.Data = null; string strIdChamp = null; bool bEntiteToChamp = false; if ( /*Pour compatibilité, avant modifs de décembre 2015, le nom du champ était en fait le même qu'une propriété champ custom. * En décembre 2015, ajout de la possiblité de retourner les valeurs display de champ custom dans les requêtes, * ce qui a changé le nom de la propriétés * */ CInfoRelationEntiteToValeurChampCustom.DecomposeNomPropriete(strPropriete, ref strIdChamp) || /*fin pour compatiblité*/ CInfoRelationComposantFiltreEntiteToChampEntite.DecomposeNomPropriete(strPropriete, ref strIdChamp, ref bEntiteToChamp)) { IElementAChamps eltAChamps = objet as IElementAChamps; if (eltAChamps == null) { return(result); } result.Data = eltAChamps.GetValeurChamp(strIdChamp); CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance()); if (result.Data != null && champ.ReadIfExists(CDbKey.CreateFromStringValue(strIdChamp))) { if (!champ.IsChoixParmis()) { result.Data = result.Data.ToString(); } else { foreach (CValeurChampCustom valeur in champ.ListeValeurs) { if (valeur.Value.Equals(result.Data)) { result.Data = valeur.Display; return(result); } } } } } else if (CInfoRelationEValeurChampCustomToDisplay.DecomposeNomPropriete(strPropriete, ref strIdChamp)) { //Rien de spécial, il s'agit de la navigation vers la valeur du champ qui a déjà été reprise par le composant filtre to champ entité //car la propriété complète d'un definitionDisplayValue est donnée par GetKeyChamp qui ajoute un composant Element->ValeurChamp + ValeurChamp->Display value result.Data = objet; } return(result); }
public COptimiseurProprieteDynamiqueChampCustomDisplayValue(CDbKey keyChamp) { m_dbKeyChamp = keyChamp; CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance()); if (champ.ReadIfExists(keyChamp)) { if (champ.IsChoixParmis()) { foreach (CValeurChampCustom valeur in champ.ListeValeurs) { m_dicValeurs[valeur.Value] = valeur.Display; } } } }
/// ////////////////////////////////////////// public override CResultAErreur MyEval(CContexteEvaluationExpression ctx, object[] listeParametres) { CResultAErreur result = CResultAErreur.True; try { CDbKey dbKeyIdChamp = null; object valeurRetournee = null; //TESTDBKEYOK : le premier paramètre peut être un Id ou un UniversalId de champ if (listeParametres.Length == 2) { if (listeParametres[0] is int) { int nIdChamp = (int)listeParametres[0]; dbKeyIdChamp = CDbKey.GetNewDbKeyOnIdAUtiliserPourCeuxQuiNeGerentPasLeDbKey(nIdChamp); } else { dbKeyIdChamp = CDbKey.CreateFromStringValue((string)listeParametres[0]); } valeurRetournee = listeParametres[1]; } if (listeParametres.Length == 1) { //1 seul paramètre, ce doit être une expression variable avec une variable champ C2iExpressionChamp exChamp = Parametres2i[0] as C2iExpressionChamp; if (exChamp != null) { CDefinitionProprieteDynamiqueChampCustom def = exChamp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom; if (def != null) { dbKeyIdChamp = def.DbKeyChamp; } } valeurRetournee = listeParametres[0]; } if (valeurRetournee == null || dbKeyIdChamp == null) { result.Data = ""; return(result); } CContexteDonnee contexteDonnee = (CContexteDonnee)ctx.GetObjetAttache(typeof(CContexteDonnee)); if (contexteDonnee == null) { contexteDonnee = new CContexteDonnee(CSessionClient.GetSessionUnique().IdSession, true, false); ctx.AttacheObjet(typeof(CContexteDonnee), contexteDonnee); } CChampCustom champ = new CChampCustom(contexteDonnee); if (champ.ReadIfExists(dbKeyIdChamp)) { if (!champ.IsChoixParmis()) { result.Data = valeurRetournee.ToString(); } else { foreach (CValeurChampCustom valeur in champ.ListeValeurs) { if (valeur.Value.Equals(valeurRetournee)) { result.Data = valeur.Display; return(result); } } } } result.Data = ""; } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }