Ajouter une méthode d'affichage ou de modification via une extension dans Dynamics 365
Publié : 16 février 2025 à 12 h 00 min 25 s 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 (à la fois en termes d'intuitivité et 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 aussi pour les formulaires.
Tout d'abord, créez une nouvelle classe. Vous pouvez lui donner le nom que vous voulez, mais pour une raison quelconque, il doit être suffixé par « _Extension ». Disons que vous devez 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 maintenant 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 retourne 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 bon type (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 d'origine, c'était le cas. Je laisse les informations ici au cas où certains lecteurs utiliseraient encore des versions plus anciennes.