Miklix

Tilføj visnings- eller redigeringsmetode via udvidelse i Dynamics 365

Udgivet: 16. februar 2025 kl. 11.55.02 UTC

I denne artikel forklarer jeg, hvordan man bruger en klasseudvidelse til at tilføje en visningsmetode til en tabel og en formular i Dynamics 365 for Operations, inklusive X++ kodeeksempler.


Denne side er blevet maskinoversat fra engelsk for at gøre den tilgængelig for så mange mennesker som muligt. Desværre er maskinoversættelse endnu ikke en perfekt teknologi, så der kan forekomme fejl. Hvis du foretrækker det, kan du se den originale engelske version her:

Add Display or Edit Method via Extension in Dynamics 365

Selvom planlægningen af ​​at bruge visnings- eller redigeringsmetoder i Dynamics er noget, der generelt burde få dig til at overveje, om du måske kunne designe din løsning på en anden måde, er de nogle gange den bedste vej at gå.

I tidligere versioner af Dynamics og Axapta var det meget nemt at lave visnings- eller redigeringsmetoder på tabeller og formularer, men da jeg for nylig skulle lave min første redigeringsmetode i Dynamics 365, opdagede jeg, at proceduren for at gøre det er noget anderledes.

Der er åbenbart flere gyldige tilgange, men den jeg finder bedst (både med hensyn til intuitivitet og kodepænhed) er at bruge en klasseudvidelse. Ja, du kan bruge klasseudvidelser til at tilføje metoder til andre elementtyper end klasser - i dette tilfælde en tabel, men det virker også til formularer.

Først skal du oprette en ny klasse. Du kan navngive det, hvad du vil, men af ​​en eller anden grund skal det have suffikset "_Extension". Lad os sige, at du skal tilføje en visningsmetode til CustTable, du kan for eksempel navngive den MyCustTable_Extension.

Klassen skal være dekoreret med ExtensionOf for at lade systemet vide, hvad du udvider, som sådan:

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

Nu kan du bare implementere din visningsmetode i denne klasse, som du ville have gjort direkte på bordet i tidligere versioner af Dynamics - "dette" refererer endda til tabellen, så du kan få adgang til felter og andre metoder.

For eksempel kunne en klasse med en simpel (og fuldstændig ubrugelig) visningsmetode, der bare returnerer kundens kontonummer, se sådan ud:

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

        return this.AccountNum;
    }
}

For nu at tilføje visningsmetoden til en formular (eller formularudvidelse, hvis du ikke kan redigere formularen direkte), skal du tilføje et felt til formularen manuelt og sørge for at bruge den korrekte type (streng i dette eksempel).

På kontrollen ville du derefter indstille DataSource til CustTable (eller hvad navnet på din CustTable-datakilde nu er) og DataMethod til MyCustTable_Extension.displayAccountNum (sørg for at inkludere klassenavnet, ellers kan compileren ikke finde metoden).

Og du er færdig :-)

Opdatering: Det er ikke længere nødvendigt at inkludere udvidelsesklassens navn, når du tilføjer visningsmetoden til en formular, men på det oprindelige udgivelsestidspunkt var det det. Jeg efterlader oplysningerne her, hvis nogle læsere stadig bruger ældre versioner.

Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFastgør på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaberen og ejeren af miklix.com. Han har over 20 års erfaring som professionel computerprogrammør/softwareudvikler og er i øjeblikket fuldtidsansat i en stor europæisk IT-virksomhed. Når han ikke blogger, bruger han sin fritid på en lang række interesser, hobbyer og aktiviteter, som i et vist omfang afspejles i de mange forskellige emner, der dækkes på dette websted.