Miklix

Legg til visnings- eller redigeringsmetode via utvidelse i Dynamics 365

Publisert: 16. februar 2025 kl. 11:55:46 UTC

I denne artikkelen forklarer jeg hvordan du bruker en klasseutvidelse for å legge til en visningsmetode i en tabell og et skjema i Dynamics 365 for Operations, inkludert X++-kodeeksempler.


Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

Add Display or Edit Method via Extension in Dynamics 365

Selv om det å planlegge å bruke visnings- eller redigeringsmetoder i Dynamics er noe som generelt burde få deg til å vurdere om du kanskje kunne designe løsningen din på en annen måte, noen ganger er de den beste veien å gå.

I tidligere versjoner av Dynamics og Axapta var det veldig enkelt å lage visnings- eller redigeringsmetoder på tabeller og skjemaer, men da jeg nylig tilfeldigvis måtte lage min første redigeringsmetode i Dynamics 365, oppdaget jeg at prosedyren for å gjøre det er noe annerledes.

Det er tydeligvis flere gyldige tilnærminger, men den jeg finner best (både når det gjelder intuitivitet og kodeprethet) er å bruke en klasseutvidelse. Ja, du kan bruke klasseutvidelser for å legge til metoder til andre elementtyper enn klasser - i dette tilfellet en tabell, men det fungerer også for skjemaer.

Først oppretter du en ny klasse. Du kan navngi det hva du vil, men av en eller annen grunn det ha suffikset "_Extension". La oss si at du må legge til en visningsmetode i CustTable, du kan for eksempel gi den navnet MyCustTable_Extension.

Klassen må være dekorert med ExtensionOf for å la systemet vite hva du utvider, slik:

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

Nå kan du bare implementere visningsmetoden din i denne klassen, som du ville ha gjort direkte på bordet i tidligere versjoner av Dynamics - "dette" refererer til og med tabellen, slik at du kan få tilgang til felt og andre metoder.

For eksempel kan en klasse med en enkel (og helt ubrukelig) visningsmetode som bare returnerer kontonummeret til kunden se slik ut:

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

        return this.AccountNum;
    }
}

Nå, for å legge til visningsmetoden i et skjema (eller skjemautvidelse, hvis du ikke kan redigere skjemaet direkte), må du legge til et felt i skjemaet manuelt og sørge for å bruke riktig type (streng i dette eksemplet).

Deretter, på kontrollen, vil du sette DataSource til CustTable (eller hva navnet på CustTable-datakilden din er) og DataMethod til MyCustTable_Extension.displayAccountNum (sørg for å inkludere klassenavnet, ellers kan ikke kompilatoren finne metoden).

Og du er ferdig :-)

Oppdatering: Det er ikke lenger nødvendig å inkludere utvidelsesklassens navn når du legger til visningsmetoden i et skjema, men det var det på det opprinnelige publiseringstidspunktet. Jeg legger igjen informasjonen her i tilfelle noen lesere fortsatt bruker eldre versjoner.

Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.