Aujourd'hui,
nous allons voir comment appliquer des filtres personnalisés aux champs Lookup
en fonction des données de formulaire.
Il
est possible de filtrer la liste des enregistrements qui seront affichés à
l'utilisateur pour un champ Lookup à l'aide d'une requête FetchXml et la
fonction addPreSerach.
La
fonction addPreSearch permet de capturer l'évènement PreSearch (lorsque
l’utilisateur commence à rechercher des enregistrements) pour les champs de
type Lookup, et de définir les méthodes JavaScript à exécuter pour gérer cet
évènement. Ceci permet de filtrer et de contrôler les résultats à afficher dans
la liste de recherche.
Pour utiliser cette fonction:
Xrm.Page.getControl("Fieldname
").addPreSearch(OnPreSearchHandler)
Pour
annuler l'abonnement d'une méthode à l'évènement PreSearch vous pouvez utiliser
la fonction removePreSearch :
Xrm.Page.getControl("Fieldname ").removePreSearch(handler)
Pour
tester ces fonctions, je vous propose l'exemple suivant : sur l'entité Compte
nous avons le champ Compte parent et le champ Type de compte, comme vous pouvez
le constater dans l'image ci-dessous :
Nous
allons donc filtrer le champ Compte parent en fonction du champ Type de compte afin
de ne proposer que les Comptes parent du même type que le compte consulté. Pour
cela nous allons utiliser le code ci-dessous :
La
1ère méthode PreSearchHandler permet de gérer l'évènement PreSerach
pour le champ "Compte parent", donc elle récupère la valeur du champ "Type
de compte", et ensuite elle construit la requête FetchXml en fonction de la
valeur en passant le type du compte récupéré. La requête construite permettra
de filtrer les résultats du champ "Compte parent".
La
2ème méthode OnLoad me permet d'abonner la fonction PreSearchHandler à
l'évènement PreSearch du champ "Compte parent". La fonction se
lancera ainsi à chaque fois que l'utilisateur commencera à chercher dans le
champ "Compte parent".
Pour
tester ce code dans le CRM, nous allons créer une nouvelle ressource web et y
copier ce code, puis attacher la fonction OnLoad à l'évènement OnLoad du
formulaire de l'entité Compte et enregistrer et publier le formulaire.
Ensuite,
nous allons attacher cette ressource au formulaire principal de l'entité Compte
et enregistrer la fonction OnLoad sur l'évènement OnLoad :
Pour
tester, nous allons prendre un compte existant avant de renseigner le champ
Type de compte. Le champ Compte parent propose tous les comptes disponibles
comme vous pouvez le remarquer dans l'écran ci-dessous :
Une
fois qu’une valeur est rentrée dans le champ Type de compte, le Lookup Compte
parent se filtre automatiquement en proposant uniquement les comptes ayant le
même type que celui choisi :
En
proposant aux utilisateurs une liste préfiltrée d'enregistrements, le
remplissage du formulaire est facilité faisant gagner un temps considérable aux
utilisateurs. Il ne faut surtout pas hésiter à utiliser cette fonctionnalité
qui rend sans doute l'expérience utilisateur plus simple.
J’espère que cet article peut vous être utile.
Bonjour,
RépondreSupprimerDébutant en JS ces valeurs correspondent à quoi exactement ?
jav_accounttypecode
parentaccountid
je pourrais ainsi appliquer à mon formulaire.
Merci pour cette solution qui me semble aussi très utile.
Lionel
Bonjour Lionel,
SupprimerLa valeur parentaccountid correspond au nom système du lookup Compte parent que je souhaite filtré
et la valeur jav_accounttypecode correspond au nom système du champe qui me premettra de filtrer la liste des comptes à afficher dans le lookup Compte parent.
Bon courage.
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimer