//----------------------------------------------------------- private C2iRequeteAvancee GetRequete(CParametreInspirationProprieteDeType parametre) { C2iRequeteAvancee requete = null; if (m_dicRequetes.TryGetValue(parametre, out requete)) { return(requete); } if (parametre.Type == null) { return(null); } CDefinitionProprieteDynamiqueChampCustom defCustom = parametre.Champ as CDefinitionProprieteDynamiqueChampCustom; if (defCustom != null) { requete = GetRequeteChampCustom(parametre); } CDefinitionProprieteDynamiqueDotNet defDotNet = parametre.Champ as CDefinitionProprieteDynamiqueDotNet; if (defDotNet != null) { requete = GetRequeteChampDotNet(parametre); } m_dicRequetes[parametre] = requete; return(requete); }
public CRequeteRechercheObjet GetRequeteRecherche() { CDefinitionProprieteDynamiqueChampCustom defC = new CDefinitionProprieteDynamiqueChampCustom(this); return(new CRequeteRechercheObjet( I.T("Search field '@1'|20038", Nom), defC)); }
//------------------------------------------------------------- private int?GetIdChampOptimFromFormule(C2iExpression formule) { C2iExpressionChamp exp = formule as C2iExpressionChamp; if (exp != null) { //TESTDBKEYOK CDefinitionProprieteDynamiqueChampCustom prop = exp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom; if (prop != null) { return(CChampCustom.GetIdFromDbKey(prop.DbKeyChamp)); } } return(null); }
/// ////////////////////////////////////////////////// public override bool DoesUse(object objetCherche) { if (base.DoesUse(objetCherche)) { return(true); } CDefinitionProprieteDynamiqueChampCustom defChamp = objetCherche as CDefinitionProprieteDynamiqueChampCustom; if (defChamp != null && m_champCustom != null) { if (defChamp.DbKeyChamp == m_champCustom.DbKey) { return(true); } } return(false); }
//------------------------------------------------- private CResultAErreurType <C2iExpression> GetFormuleFinaleForEntite(CEntiteSnmp entite) { CResultAErreurType <C2iExpression> result = new CResultAErreurType <C2iExpression>(); if (m_formulePolling == null) { result.EmpileErreur(I.T("Can not apply formula to entity @1|20254", entite.Libelle)); return(result); } C2iExpression formule = CCloner2iSerializable.Clone(m_formulePolling) as C2iExpression; ArrayList lst = formule.ExtractExpressionsType(typeof(C2iExpressionChamp)); foreach (C2iExpressionChamp exp in lst) { CDefinitionProprieteDynamiqueChampCustom def = exp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom; string strOID = null; if (def != null) { CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance()); if (champ.ReadIfExists(def.DbKeyChamp)) { strOID = entite.GetFieldOID(champ.Id); if (strOID.Trim().Length == 0) { strOID = null; } else { exp.DefinitionPropriete = new CDefinitionProprieteDynamiqueOID(strOID); } } } if (strOID == null) { result.EmpileErreur(I.T("Can not find SNMP field for @1|20255", def.Nom)); return(result); } } result.Data = formule; return(result); }
//------------------------------------------------------------------- //S'il n'y a pas de paramètres, lit tous les champs custom public static void ReadChampsCustom(CListeObjetsDonnees lstObjets, params int[] idsChamps) { if (lstObjets.Count == 0) { return; } IObjetDonneeAChamps eltAChamps = lstObjets[0] as IObjetDonneeAChamps; if (eltAChamps == null) { return; } if (idsChamps.Length == 0) { lstObjets.ReadDependances("RelationsChampsCustom"); foreach (IObjetDonneeAChamps eltAChamp in lstObjets) { SetTousChampsLus(eltAChamp); } return; } List <string> lstChamps = new List <string>(); foreach (int nIdChamp in idsChamps) { CChampCustom champ = new CChampCustom(eltAChamps.ContexteDonnee); if (champ.ReadIfExists(nIdChamp)) { CDefinitionProprieteDynamiqueChampCustom def = new CDefinitionProprieteDynamiqueChampCustom(champ); lstChamps.Add(def.NomPropriete); } } lstObjets.ReadDependances(lstChamps.ToArray()); foreach (IObjetDonneeAChamps eltAChamp in lstObjets) { foreach (int nIdChamp in idsChamps) { SetChampsLus(eltAChamp, nIdChamp); } } }
//----------------------------------------------------------- private C2iRequeteAvancee GetRequeteChampCustom(CParametreInspirationProprieteDeType parametre) { CDefinitionProprieteDynamiqueChampCustom defChampCustom = parametre.Champ as CDefinitionProprieteDynamiqueChampCustom; if (defChampCustom == null || parametre.Type == null || defChampCustom.DbKeyChamp == null) { return(null); } DataTable table = new DataTable(); DataRow row = table.NewRow(); IObjetDonneeAChamps objet = Activator.CreateInstance(parametre.Type, new object[] { row }) as IObjetDonneeAChamps; if (objet != null) { string strTableValeurs = objet.GetNomTableRelationToChamps(); C2iRequeteAvancee requete = new C2iRequeteAvancee(); requete.TableInterrogee = strTableValeurs; requete.ListeChamps.Add(new C2iChampDeRequete("LABEL", new CSourceDeChampDeRequete(CRelationElementAChamp_ChampCustom.c_champValeurString), typeof(string), OperationsAgregation.None, true)); int nIdChamp = -1; //TESTDBKEYOK SC 31/03/2014 if (defChampCustom.DbKeyChamp.IsNumericalId()) { nIdChamp = (int)defChampCustom.DbKeyChamp.GetValeurInDb(); } else { nIdChamp = CChampCustom.GetIdFromDbKey(defChampCustom.DbKeyChamp); } requete.FiltreAAppliquer = new CFiltreData(CChampCustom.c_champId + "=@1", nIdChamp); return(requete); } return(null); }
//--------------------------------------------------------------- private void CalculeValeurs(IEnumerable <CDefinitionProprieteDynamique> lstChamps) { m_dicValeursSimples = new Dictionary <CDefinitionProprieteDynamique, object>(); m_dicValeursParentes = new Dictionary <CDefinitionProprieteDynamique, CValeursProprietes>(); m_dicValeursFilles = new Dictionary <CDefinitionProprieteDynamique, List <CValeursProprietes> >(); if (m_objetAssocie == null) { return; } DataRowVersion oldVers = m_objetAssocie.VersionToReturn; m_objetAssocie.VersionToReturn = m_versionObjetStocke; m_strLibelleObjet = m_objetAssocie.DescriptionElement; HashSet <CDbKey> dicChampsAffectes = new HashSet <CDbKey>(); //Optimisation des champs custom IElementAChamps eltAChamps = m_objetAssocie as IElementAChamps; if (eltAChamps != null) { foreach (CRelationElementAChamp_ChampCustom rel in eltAChamps.RelationsChampsCustom) { dicChampsAffectes.Add(rel.ChampCustom.DbKey); } } CResultAErreur res = CResultAErreur.True; foreach (CDefinitionProprieteDynamique def in lstChamps) { if (IsChampCompatibleImport(m_objetAssocie.GetType(), def)) { try { bool bInterprete = true; CDefinitionProprieteDynamiqueChampCustom defCust = def as CDefinitionProprieteDynamiqueChampCustom; if (defCust != null) { bInterprete = dicChampsAffectes.Contains(defCust.DbKeyChamp); } if (bInterprete) { DateTime dt = DateTime.Now; res = CInterpreteurProprieteDynamique.GetValue(m_objetAssocie, def); TimeSpan sp = DateTime.Now - dt; if (sp.TotalMilliseconds > 400) { dt = DateTime.Now; } if (res) { object obj = res.Data; if (obj is CObjetDonnee) { CValeursProprietes val = new CValeursProprietes((CObjetDonnee)obj, m_bAvecValeursOriginales); m_dicValeursParentes[def] = val; } else if (obj is IEnumerable && !(obj is string)) { List <CValeursProprietes> lst = new List <CValeursProprietes>(); foreach (object valDeListe in (IEnumerable)obj) { if (valDeListe is CObjetDonnee) { lst.Add(new CValeursProprietes((CObjetDonnee)valDeListe, m_bAvecValeursOriginales)); } } if (lst.Count > 0) { m_dicValeursFilles[def] = lst; } } else if (obj != null && C2iSerializer.IsObjetSimple(obj)) { m_dicValeursSimples[def] = obj; } } } } catch { } } } if (m_bAvecValeursOriginales && m_objetAssocie.Row.RowState == DataRowState.Modified) { m_objetAssocie.VersionToReturn = DataRowVersion.Original; m_valeursOriginales = new CValeursProprietes(m_objetAssocie, false); } m_objetAssocie.VersionToReturn = oldVers; }
/// /////////////////////////////////////////////////////////// protected virtual void GetDefinitionsChamps( Type tp, int nProfondeur, ArrayList lstProps, string strCheminConvivial, string strCheminReel, CDefinitionProprieteDynamique definitionParente ) { /*ITraducteurNomChamps traducteur = null; * if ( definitionParente is ITraducteurNomChamps ) * traducteur = (ITraducteurNomChamps)definitionParente;*/ if (nProfondeur < 0) { return; } if (tp == null) { return; } //Proprietes foreach (PropertyInfo info in tp.GetProperties()) { object[] attribs = info.GetCustomAttributes(typeof(DynamicFieldAttribute), true); if (attribs.Length == 1) { DynamicFieldAttribute attrib = (DynamicFieldAttribute)attribs[0]; bool bReadOnly = info.GetSetMethod() == null; Type tpProp = info.PropertyType; bool bIsArray = tpProp.IsArray; if (bIsArray) { tpProp = tpProp.GetElementType(); } bool bHasSubProprietes = HasSubProperties(tpProp); if (m_bAvecReadOnly || !bReadOnly || bHasSubProprietes) { CDefinitionProprieteDynamique def = new CDefinitionProprieteDynamiqueDotNet( strCheminConvivial + attrib.NomConvivial, strCheminReel + info.Name, new CTypeResultatExpression(tpProp, bIsArray), bHasSubProprietes, bReadOnly, attrib.Rubrique); if (AddDefinition(lstProps, def /*, traducteur*/)) { GetDefinitionsChamps(info.PropertyType, nProfondeur - 1, lstProps, strCheminConvivial + attrib.NomConvivial + ".", strCheminReel + info.Name + ".", def); } } } attribs = info.GetCustomAttributes(typeof(DynamicChildsAttribute), true); { if (attribs.Length == 1) { DynamicChildsAttribute attrib = (DynamicChildsAttribute)attribs[0]; CDefinitionProprieteDynamique def = new CDefinitionProprieteDynamiqueDotNet( strCheminConvivial + attrib.NomConvivial, strCheminReel + info.Name, new CTypeResultatExpression(attrib.TypeFils, true) , true, true, attrib.Rubrique); if (AddDefinition(lstProps, def /*, traducteur*/)) { GetDefinitionsChamps(attrib.TypeFils, nProfondeur - 1, lstProps, strCheminConvivial + attrib.NomConvivial + ".", strCheminReel + info.Name + ".", def); } } } } //Champs custom CRoleChampCustom role = CRoleChampCustom.GetRoleForType(tp); if (role != null) { CListeObjetsDonnees listeChamps = CChampCustom.GetListeChampsForRole(ContexteDonneeCache, role.CodeRole); foreach (CChampCustom champ in listeChamps) { CDefinitionProprieteDynamiqueChampCustom def = new CDefinitionProprieteDynamiqueChampCustom(champ); if (champ.Categorie.Trim() != "") { def.Rubrique = champ.Categorie; } else { def.Rubrique = I.T("Complementary informations|59"); } AddDefinition(lstProps, def /*, traducteur*/); } } //Champs calculés if (AvecReadOnly) { CListeObjetsDonnees liste = new CListeObjetsDonnees(ContexteDonneeCache, typeof(CChampCalcule)); liste.Filtre = new CFiltreData(CChampCalcule.c_champTypeObjets + "=@1", tp.ToString()); foreach (CChampCalcule champ in liste) { CDefinitionProprieteDynamiqueChampCalcule def = new CDefinitionProprieteDynamiqueChampCalcule(champ); def.HasSubProperties = HasSubProperties(def.TypeDonnee.TypeDotNetNatif); def.Rubrique = I.T("Complementary informations|59"); AddDefinition(lstProps, def /*, traducteur*/); } } //Méthodes if (m_bAvecMethodes && AvecReadOnly) { //Va chercher les propriétés foreach (MethodInfo methode in tp.GetMethods()) { object[] attribs = methode.GetCustomAttributes(typeof(DynamicMethodAttribute), true); if (attribs.Length == 1) { DynamicMethodAttribute attrib = (DynamicMethodAttribute)attribs[0]; CTypeResultatExpression typeRes = new CTypeResultatExpression(methode.ReturnType, false); if (methode.ReturnType.HasElementType) { typeRes = new CTypeResultatExpression(methode.ReturnType.GetElementType(), true); } CDefinitionProprieteDynamique def = new CDefinitionMethodeDynamique( strCheminConvivial + methode.Name, strCheminReel + methode.Name, typeRes, HasSubProperties(methode.ReturnType), attrib.Descriptif, attrib.InfosParametres); def.Rubrique = I.T("Methods|58"); lstProps.Add(def); GetDefinitionsChamps(methode.ReturnType, nProfondeur - 1, lstProps, strCheminConvivial + methode.Name + ".", strCheminReel + methode.Name + ".", def); } } foreach (CMethodeSupplementaire methode in CGestionnaireMethodesSupplementaires.GetMethodsForType(tp)) { CDefinitionProprieteDynamique def = new CDefinitionMethodeDynamique( strCheminConvivial + methode.Name, strCheminReel + methode.Name, new CTypeResultatExpression(methode.ReturnType, methode.ReturnArrayOfReturnType), HasSubProperties(methode.ReturnType)); def.Rubrique = I.T("Methods|58"); lstProps.Add(def); GetDefinitionsChamps(methode.ReturnType, nProfondeur - 1, lstProps, strCheminConvivial + methode.Name + ".", strCheminReel + methode.Name + ".", def); } } //Relations TypeID foreach (RelationTypeIdAttribute relation in CContexteDonnee.RelationsTypeIds) { if (relation.NomConvivialPourParent != "" && relation.IsAppliqueToType(tp)) { CDefinitionProprieteDynamiqueRelationTypeId def = new CDefinitionProprieteDynamiqueRelationTypeId(relation); AddDefinition(lstProps, def /*, traducteur*/); } } //Données ucmulées if (m_bAvecReadOnly) { CTypeDonneeCumulee[] donnees = GetTypesDonneesPourType(tp); foreach (CTypeDonneeCumulee typeDonnee in donnees) { int nCle = 0; foreach (CCleDonneeCumulee cle in typeDonnee.Parametre.ChampsCle) { if (cle.TypeLie == tp) { CDefinitionProprieteDynamiqueDonneeCumulee def = new CDefinitionProprieteDynamiqueDonneeCumulee( typeDonnee, nCle); AddDefinition(lstProps, def /*, traducteur*/); break; } } } } //Liens sur champs custom fils if (m_bAvecReadOnly) { //Liens sur champs custom CListeObjetsDonnees listeChamps = new CListeObjetsDonnees(ContexteDonneeCache, typeof(CChampCustom)); listeChamps.Filtre = new CFiltreData( CChampCustom.c_champTypeObjetDonnee + "=@1", tp.ToString()); foreach (CChampCustom champ in listeChamps) { CDefinitionProprieteDynamiqueChampCustomFils def = new CDefinitionProprieteDynamiqueChampCustomFils( champ); if (champ.Categorie.Trim() != "") { def.Rubrique = champ.Categorie; } else { def.Rubrique = I.T("Complementary informations|59"); } AddDefinition(lstProps, def /*, traducteur*/); } } //Liens par CListeEntite if (m_bAvecReadOnly) { CListeObjetsDonnees listeEntites = new CListeObjetsDonnees(ContexteDonneeCache, typeof(CListeEntites)); listeEntites.Filtre = new CFiltreData( CListeEntites.c_champTypeElementSourceDeRecherche + "=@1", tp.ToString()); foreach (CListeEntites liste in listeEntites) { CDefinitionProprieteDynamiqueListeEntites def = new CDefinitionProprieteDynamiqueListeEntites(liste); def.Rubrique = I.T("Lists|60"); AddDefinition(lstProps, def /*, traducteur*/); } } }
/// ////////////////////////////////////////// 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); }
/// /////////////////////////////////////////////////////////// protected virtual void GetDefinitionsChamps(Type tp, int nProfondeur, ArrayList lstProps, string strCheminConvivial, string strCheminReel, CDefinitionProprieteDynamique defParente) { /*ITraducteurNomChamps traducteur = null; * if ( defParente is ITraducteurNomChamps ) * traducteur = (ITraducteurNomChamps)defParente;*/ if (nProfondeur < 0) { return; } CStructureTable structure = null; try { structure = CStructureTable.GetStructure(tp); } catch { return; } foreach (CInfoChampTable info in structure.Champs) { //Trouve la méthode correspondante //18/09 bug : si un classe générique surcharge une propriété de sa classe de base, //GetProperty retourne une erreur sur cette propriété PropertyInfo propInfo = GetPropertySafe(tp, info.Propriete); if (propInfo != null) { CDefinitionProprieteDynamique def = new CDefinitionProprieteDynamiqueDotNet( strCheminConvivial + info.NomConvivial, strCheminReel + info.Propriete, new CTypeResultatExpression(propInfo.PropertyType, false), false, true, "" ); AddDefinition(lstProps, def /*, traducteur*/); GetDefinitionsChamps(propInfo.PropertyType, nProfondeur - 1, lstProps, strCheminConvivial + info.NomConvivial + ".", strCheminReel + info.Propriete + ".", def); } } //Ajoute les relations parentes foreach (CInfoRelation relation in structure.RelationsParentes) { PropertyInfo propInfo = GetPropertySafe(tp, relation.Propriete); if (propInfo != null) { CDefinitionProprieteDynamique def = new CDefinitionProprieteDynamiqueRelation( strCheminConvivial + relation.NomConvivial, strCheminReel + relation.Propriete, relation, new CTypeResultatExpression(propInfo.PropertyType, false)); AddDefinition(lstProps, def /*, traducteur*/); } } //Ajoute les relations filles foreach (CInfoRelation relation in structure.RelationsFilles) { PropertyInfo propInfo = GetPropertySafe(tp, relation.Propriete); if (propInfo != null) { object[] attribs = propInfo.GetCustomAttributes(typeof(RelationFilleAttribute), true); if (attribs.Length != 0) { string strNomConvivial = strCheminConvivial + relation.NomConvivial; object[] attrsDynCh = propInfo.GetCustomAttributes(typeof(DynamicChildsAttribute), true); if (attrsDynCh.Length != 0) { DynamicChildsAttribute dynAtt = attrsDynCh[0] as DynamicChildsAttribute; strNomConvivial = strCheminConvivial + dynAtt.NomConvivial; } Type tpFille = ((RelationFilleAttribute)attribs[0]).TypeFille; //Pas les relations aux champs custom, elles sont gerées en dessous //30/11/2011 stef : Euh, en fait, si, ça peut servir ! pour accélerer des filtres /*if ( !tpFille.IsSubclassOf ( typeof(CRelationElementAChamp_ChampCustom) ))*/ AddDefinition(lstProps, new CDefinitionProprieteDynamiqueRelation( strNomConvivial, strCheminReel + relation.Propriete, relation, new CTypeResultatExpression(tpFille, true)) /*, * traducteur*/); } } } CRoleChampCustom role = CRoleChampCustom.GetRoleForType(tp); if (role != null) { CListeObjetsDonnees listeChamps = CChampCustom.GetListeChampsForRole(m_contexteDonneeCache, role.CodeRole); foreach (CChampCustom champ in listeChamps) { CDefinitionProprieteDynamiqueChampCustom def = new CDefinitionProprieteDynamiqueChampCustom(champ); AddDefinition(lstProps, def /*, traducteur*/); } } //Ajoute les relations TypeId foreach (RelationTypeIdAttribute relation in CContexteDonnee.RelationsTypeIds) { if (relation.NomConvivialPourParent != "" && relation.IsAppliqueToType(tp)) { AddDefinition(lstProps, new CDefinitionProprieteDynamiqueRelationTypeId(relation) /*, traducteur*/); } } //Ajoute les données cumulées CTypeDonneeCumulee[] donnees = CFournisseurPropDynStd.GetTypesDonneesPourType(tp); foreach (CTypeDonneeCumulee typeDonnee in donnees) { int nCle = 0; foreach (CCleDonneeCumulee cle in typeDonnee.Parametre.ChampsCle) { if (cle.TypeLie == tp) { CDefinitionProprieteDynamiqueDonneeCumulee def = new CDefinitionProprieteDynamiqueDonneeCumulee( typeDonnee, nCle); AddDefinition(lstProps, def /*, traducteur*/); break; } } } //Liens sur champs custom fils //Liens sur champs custom CListeObjetsDonnees listeChampsFils = new CListeObjetsDonnees(m_contexteDonneeCache, typeof(CChampCustom)); listeChampsFils.Filtre = new CFiltreData( CChampCustom.c_champTypeObjetDonnee + "=@1", tp.ToString()); foreach (CChampCustom champ in listeChampsFils) { CDefinitionProprieteDynamiqueChampCustomFils def = new CDefinitionProprieteDynamiqueChampCustomFils( champ); if (champ.Categorie.Trim() != "") { def.Rubrique = champ.Categorie; } else { def.Rubrique = I.T("Complementary informations|59"); } AddDefinition(lstProps, def /*, traducteur*/); } }
/// /////////////////////////////////////////////////////////// public object GetValue(object objetInterroge, string strPropriete) { CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false); if (objetInterroge == null) { return(null); } //Est-ce une propriété simple ?(majorité des cas ) object objetAInterroger = null; MemberInfo membre = null; if (CInterpreteurTextePropriete.GetObjetFinalEtMemberInfo(objetInterroge, strPropriete, ref objetAInterroger, ref membre) && membre != null) { return(CInterpreteurTextePropriete.GetValue(objetAInterroger, membre)); } //Bon pas de bol, c'est autre chose, il faut donc chercher ce que c'est Type tp = objetInterroge.GetType(); string strPropDebut = strPropriete.Split('.')[0]; object objetPremier = CInterpreteurTextePropriete.GetValue(objetInterroge, strPropDebut); if (objetPremier == null) { string strIdChamp = CDefinitionProprieteDynamiqueChampCustom.GetIdPropriete(strPropDebut); foreach (CDefinitionProprieteDynamique def in fournisseur.GetDefinitionsChamps(tp, 0)) { if (def.NomPropriete == strPropDebut || (strIdChamp != "" && def is CDefinitionProprieteDynamiqueChampCustom) && ((CDefinitionProprieteDynamiqueChampCustom)def).DbKeyChamp == CDbKey.CreateFromStringValue(strIdChamp)) { objetPremier = GetValue(objetInterroge, def); //Si la suite est une relation de la valeur champ vers l'objet, il ne faut pas //traier la suite if (strPropDebut != strPropriete) { string strSuiteTmp = strPropriete.Substring(strPropDebut.Length + 1); if (CInfoRelationComposantFiltreChampToEntite.IsRelationFromChampToEntite(strSuiteTmp)) { //On a déjà traité ce lien par GetValeurPropriété (qui retourne la valeur //et nom pas le lien vers la valeur) strPropDebut += "." + strPropriete.Split('.')[1]; } } break; } } } if (objetPremier == null) { return(null); } if (strPropDebut == strPropriete) { return(objetPremier); } string strSuite = strPropriete.Substring(strPropDebut.Length + 1); return(GetValue(objetPremier, strSuite)); }
/// //////////////////////////////////////////////////////////////// public void ConvertNomProprieteFromIdToDbKey() { SetNomPropriete(CDefinitionProprieteDynamiqueChampCustom.ConvertNomProprieteFromIdToDbKey(NomPropriete)); }