Miklix

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

Udgivet: 16. februar 2025 kl. 11.55.02 UTC
Sidst opdateret: 12. januar 2026 kl. 08.57.15 UTC

I denne artikel forklarer jeg, hvordan man bruger en klasseudvidelse til at tilføje en displaymetode 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ægning af brugen af visnings- eller redigeringsmetoder i Dynamics generelt bør 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 løsning.

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

Der er tydeligvis flere brugbare tilgange, men den jeg finder bedst (både med hensyn til intuitivitet og kodens pæ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 fungerer også til formularer.

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

Klassen skal dekoreres med ExtensionOf for at lade systemet vide, hvad du udvider, således:

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

Nu kan du blot implementere din displaymetode i denne klasse, ligesom du ville have gjort direkte på tabellen i tidligere versioner af Dynamics - "dette" refererer endda til tabellen, så du kan tilgå felter og andre metoder.

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

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

        return this.AccountNum;
    }
}

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

Derefter skal du på kontrolelementet 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 navnet på udvidelsesklassen, når displaymetoden tilføjes til en formular, men på det oprindelige udgivelsestidspunkt var det det. Jeg lader oplysningerne stå her, i tilfælde af at nogle læsere stadig bruger ældre versioner.

Yderligere læsning

Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:


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

Mikkel Christensen

Om forfatteren

Mikkel 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.