Показать сообщение отдельно
Старый 25.01.2010, 01:08   #1  
Blog bot is offline
Blog bot
Участник
 
25,493 / 847 (79) +++++++
Регистрация: 28.10.2006
jinx: Dynamics AX – Den Aufrufer des Aufrufers bestimmen
In Microsoft Dynamics AX wird das Args-Objekt dazu verwendet, Informationen z.B. aneine aufzurufende Maske oder Klasse zu übergeben.

Mittels des Args-Objektes ist es z.B. möglich, den auf einer Maske ausgewählten Datensatzan die Aufzurufende (Unter)Maske zu übergeben, um mit diesem die Darstellung und/oderFunktionen der Maske anzupassen.
Oft wird dieses Vorgehen dazu verwendet, Abfragen (Queries) entsprechend einzugrenzen,damit nur relevante Informationen verarbeitet werden.
Eine beispielhafte Anforderung hierfür könnte sein, alle Aufträge des zuvor ausgewähltenKunden in einer neuen Maske anzuzeigen.

Manchmal ist aber notwendig, nicht nur den Aufrufer (oder den gewählten Datensatz),sondern auch dessen Aufrufer zu kennen, um bestimme Funktionalitäten erstellen oderimplementieren zu können.
Herbei kann es sein, dass der ausgewählter Datensatz über mehrere Aufrufebenen übergebenwerden muss und der direkte Aufrufer dennoch bekannt sein muss.



Um nun die benötigten Information, ausgewählter Kunden in der Hauptmaske, auf der2. Maske zur Verfügung zu haben, muss über das FormRun-Objekt der 1. Maske der Aufrufer(Caller) dieser Maske bestimmt werden.

Beispiel (Init-Methode der 2. Maske):

public void init(){ Object callerDataSource; FormRun callerFormRun; common callerRecord; common callerRecordOfCallerRecord; ; super(); if(element.args() && element.args().dataset()) { callerRecord = element.args().record(); callerDataSource = callerRecord.dataSource(); callerFormRun = element.args().caller(); callerRecordOfCallerRecord = callerFormRun.args().record(); CtrlCallerTable.text(tableid2name(callerRecord.TableId)); CtrlCallerOdCallerTable.text(tableid2name(callerRecordOfCallerRecord.TableId)); }}
.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }



Sicherlicht läßt sich das in dem Beispiel beschriebene Verhalten auch anders (odereleganter) Lösen. Dieses Beispiel wurde nur gewählt, um den Ablauf oder die notwendigenSchritte zu demonstrieren, wie Aufrufer über mehrere Ebenen bestimmt werden können.


Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)

More...