Miklix

Weergave- of bewerkingsmethode toevoegen via extensie in Dynamics 365

Gepubliceerd: 16 februari 2025 om 11:55:48 UTC

In dit artikel leg ik uit hoe u een klasse-extensie gebruikt om een display-methode toe te voegen aan een tabel en een formulier in Dynamics 365 for Operations, inclusief X++-codevoorbeelden.


Deze pagina is machinaal uit het Engels vertaald om hem voor zoveel mogelijk mensen toegankelijk te maken. Helaas is machinevertaling nog geen geperfectioneerde technologie, dus er kunnen fouten optreden. Als je dat liever hebt, kun je hier de originele Engelse versie bekijken:

Add Display or Edit Method via Extension in Dynamics 365

Als u van plan bent om weergave- of bewerkingsmethoden in Dynamics te gebruiken, moet u er doorgaans over nadenken of u uw oplossing niet op een andere manier kunt ontwerpen. Soms zijn ze echter de beste oplossing.

In eerdere versies van Dynamics en Axapta was het heel eenvoudig om weergave- of bewerkingsmethoden voor tabellen en formulieren te maken. Maar toen ik onlangs mijn eerste bewerkingsmethode in Dynamics 365 moest maken, ontdekte ik dat de procedure daarvoor enigszins anders is.

Er zijn duidelijk meerdere geldige benaderingen, maar degene die ik het beste vind (zowel qua intuïtiviteit als codefraaiheid) is om een class extension te gebruiken. Ja, je kunt class extensions gebruiken om methoden toe te voegen aan andere elementtypen dan klassen - in dit geval een tabel, maar het werkt ook voor formulieren.

Maak eerst een nieuwe klasse. U kunt het elke naam geven die u wilt, maar om een of andere reden moet het het suffix "_Extension" hebben. Stel dat u een display-methode aan CustTable wilt toevoegen, dan kunt u het bijvoorbeeld MyCustTable_Extension noemen.

De klasse moet worden gedecoreerd met ExtensionOf om het systeem te laten weten wat u uitbreidt, zoals hier:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

Nu kunt u uw display-methode gewoon in deze klasse implementeren, zoals u dat in eerdere versies van Dynamics rechtstreeks in de tabel zou hebben gedaan. 'this' verwijst zelfs naar de tabel, zodat u toegang hebt tot velden en andere methoden.

Een klasse met een eenvoudige (en volkomen nutteloze) display-methode die alleen het rekeningnummer van de klant retourneert, zou er bijvoorbeeld zo uit kunnen zien:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

Om de display-methode aan een formulier (of formulierextensie, als u het formulier niet rechtstreeks kunt bewerken) toe te voegen, moet u handmatig een veld aan het formulier toevoegen. Zorg er daarbij voor dat u het juiste type gebruikt (in dit voorbeeld een tekenreeks).

Vervolgens stelt u op het besturingselement DataSource in op CustTable (of hoe uw CustTable-gegevensbron ook heet) en DataMethod op MyCustTable_Extension.displayAccountNum (zorg ervoor dat u de klassenaam opneemt, anders kan de compiler de methode niet vinden).

En klaar :-)

Update: Het is niet langer nodig om de extensieklassenaam op te nemen bij het toevoegen van de display-methode aan een formulier, maar op het oorspronkelijke moment van publicatie was dat wel het geval. Ik laat de informatie hier achter voor het geval dat sommige lezers nog oudere versies gebruiken.

Delen op BlueskyDelen op FacebookDelen op LinkedInDelen op TumblrDelen op XDelen op LinkedInPin op Pinterest

Mikkel Bang Christensen

Over de auteur

Mikkel Bang Christensen
Mikkel is de bedenker en eigenaar van miklix.com. Hij heeft meer dan 20 jaar ervaring als professioneel computerprogrammeur/softwareontwikkelaar en werkt momenteel fulltime voor een groot Europees IT-bedrijf. Als hij niet blogt, besteedt hij zijn vrije tijd aan een breed scala aan interesses, hobby's en activiteiten, die tot op zekere hoogte weerspiegeld kunnen worden in de verscheidenheid aan onderwerpen op deze website.