Anzeige- oder Bearbeitungsmethode über Erweiterung in Dynamics 365 hinzufügen
Veröffentlicht: 16. Februar 2025 um 11:55:04 UTC
In diesem Artikel erkläre ich, wie man mithilfe einer Klassenerweiterung einer Tabelle und einem Formular in Dynamics 365 for Operations eine Anzeigemethode hinzufügt, einschließlich X++-Codebeispielen.
Add Display or Edit Method via Extension in Dynamics 365
Wenn Sie Anzeige- oder Bearbeitungsmethoden in Dynamics verwenden möchten, sollten Sie grundsätzlich darüber nachdenken, ob Sie Ihre Lösung nicht auch anders gestalten könnten. Manchmal sind diese jedoch die beste Lösung.
In früheren Versionen von Dynamics und Axapta war es sehr einfach, Anzeige- oder Bearbeitungsmethoden für Tabellen und Formulare zu erstellen. Als ich jedoch kürzlich zufällig meine erste Bearbeitungsmethode in Dynamics 365 erstellen musste, stellte ich fest, dass die Vorgehensweise hierfür etwas anders ist.
Es gibt offensichtlich mehrere gültige Ansätze, aber der beste (sowohl hinsichtlich der Intuition als auch der Schönheit des Codes) ist meiner Meinung nach die Verwendung einer Klassenerweiterung. Ja, Sie können Klassenerweiterungen verwenden, um anderen Elementtypen als Klassen Methoden hinzuzufügen – in diesem Fall einer Tabelle, aber es funktioniert auch für Formulare.
Erstellen Sie zunächst eine neue Klasse. Sie können sie beliebig benennen, aber aus irgendeinem Grund muss sie das Suffix „_Extension“ haben. Angenommen, Sie müssen CustTable eine Anzeigemethode hinzufügen. Sie könnten sie beispielsweise MyCustTable_Extension nennen.
Die Klasse muss mit ExtensionOf dekoriert werden, um dem System mitzuteilen, was Sie erweitern, und zwar wie folgt:
public final class MyCustTable_Extension
{
}
Jetzt können Sie Ihre Anzeigemethode einfach in dieser Klasse implementieren, wie Sie es in früheren Versionen von Dynamics direkt in der Tabelle getan hätten – „this“ verweist sogar auf die Tabelle, sodass Sie auf Felder und andere Methoden zugreifen können.
Beispielsweise könnte eine Klasse mit einer einfachen (und völlig nutzlosen) Anzeigemethode, die lediglich die Kontonummer des Kunden zurückgibt, so aussehen:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Um nun die Anzeigemethode zu einem Formular (oder einer Formularerweiterung, wenn Sie das Formular nicht direkt bearbeiten können) hinzuzufügen, müssen Sie dem Formular manuell ein Feld hinzufügen und sicherstellen, dass Sie den richtigen Typ verwenden (in diesem Beispiel eine Zeichenfolge).
Anschließend würden Sie im Steuerelement „DataSource“ auf „CustTable“ (oder den Namen Ihrer CustTable-Datenquelle) und „DataMethod“ auf „MyCustTable_Extension.displayAccountNum“ festlegen (achten Sie darauf, den Klassennamen anzugeben, da der Compiler die Methode sonst nicht finden kann).
Und fertig :-)
Update: Es ist nicht mehr notwendig, den Namen der Erweiterungsklasse anzugeben, wenn die Anzeigemethode zu einem Formular hinzugefügt wird, aber zum ursprünglichen Veröffentlichungszeitpunkt war dies der Fall. Ich lasse die Informationen hier, falls einige Leser noch ältere Versionen verwenden.