Miklix

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.


Cette page a été traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie parfaite, et des erreurs peuvent donc se produire. Si vous préférez, vous pouvez consulter la version originale en anglais ici :

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 :

[ExtensionOf(tableStr(CustTable))]
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 :

[ExtensionOf(tableStr(CustTable))]
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.

Partager sur BlueskyPartager sur FacebookPartager sur LinkedInPartager sur TumblrPartager sur XPartager sur LinkedInÉpingler sur Pinterest

Mikkel Bang Christensen

A propos de l'auteur

Mikkel Bang Christensen
Mikkel est le créateur et le propriétaire de miklix.com. Il a plus de 20 ans d'expérience en tant que programmeur informatique professionnel/développeur de logiciels et travaille actuellement à plein temps pour une grande entreprise européenne de TI. Lorsqu'il ne blogue pas, il consacre son temps libre à un large éventail d'intérêts, de passe-temps et d'activités, ce qui peut se refléter dans une certaine mesure dans la variété des sujets abordés sur ce site web.