Ajouter une méthode d'affichage ou de modification via une extension dans Dynamics 365
Publié : 16 février 2025 à 11:55:32 UTC
Dans cet article, j'explique comment utiliser une extension de classe pour ajouter une méthode d'affichage à une table et un formulaire dans Dynamics 365 for Operations, exemples de code X++ inclus.
Add Display or Edit Method via Extension in Dynamics 365
Bien que la planification de l'utilisation de méthodes d'affichage ou d'édition dans Dynamics soit quelque chose qui devrait généralement vous faire réfléchir à la possibilité de concevoir votre solution d'une manière différente, elles constituent parfois la meilleure solution.
Dans les versions précédentes de Dynamics et Axapta, il était très facile de créer des méthodes d'affichage ou d'édition sur des tables et des formulaires, mais lorsque j'ai récemment dû créer ma première méthode d'édition dans Dynamics 365, j'ai découvert que la procédure pour le faire était quelque peu différente.
Il existe évidemment plusieurs approches valables, mais celle que je trouve la meilleure (tant en termes d'intuitivité que de beauté du code) est d'utiliser une extension de classe. Oui, vous pouvez utiliser des extensions de classe pour ajouter des méthodes à d'autres types d'éléments que des classes - dans ce cas, une table, mais cela fonctionne également pour les formulaires.
Tout d'abord, créez une nouvelle classe. Vous pouvez la nommer comme vous le souhaitez, mais pour une raison quelconque, elle doit être suffixée par "_Extension". Supposons que vous ayez besoin d'ajouter une méthode d'affichage à CustTable, vous pouvez par exemple la nommer MyCustTable_Extension.
La classe doit être décorée avec ExtensionOf pour indiquer au système ce que vous étendez, comme ceci :
public final class MyCustTable_Extension
{
}
Vous pouvez désormais simplement implémenter votre méthode d'affichage dans cette classe, comme vous l'auriez fait directement sur la table dans les versions antérieures de Dynamics - « this » fait même référence à la table, vous pouvez donc accéder aux champs et à d'autres méthodes.
Par exemple, une classe avec une méthode d'affichage simple (et complètement inutile) qui renvoie simplement le numéro de compte du client pourrait ressembler à ceci :
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Maintenant, pour ajouter la méthode d'affichage à un formulaire (ou à une extension de formulaire, si vous ne pouvez pas modifier le formulaire directement), vous devez ajouter un champ au formulaire manuellement et vous assurer d'utiliser le type correct (chaîne dans cet exemple).
Ensuite, sur le contrôle, vous définiriez DataSource sur CustTable (ou quel que soit le nom de votre source de données CustTable) et DataMethod sur MyCustTable_Extension.displayAccountNum (assurez-vous d'inclure le nom de la classe, sinon le compilateur ne peut pas trouver la méthode).
Et c'est fait :-)
Mise à jour : il n'est plus nécessaire d'inclure le nom de la classe d'extension lors de l'ajout de la méthode d'affichage à un formulaire, mais au moment de la publication initiale, c'était le cas. Je laisse les informations ici au cas où certains lecteurs utiliseraient encore des versions plus anciennes.