something about Microsoft Dynamics AX RSS 2.0
 Sunday, January 24, 2010

In Microsoft Dynamics AX wird das Args-Objekt dazu verwendet, Informationen z.B. an eine aufzurufende Maske oder Klasse zu übergeben.

Mittels des Args-Objektes ist es z.B. möglich, den auf einer Maske ausgewählten Datensatz an die Aufzurufende (Unter)Maske zu übergeben, um mit diesem die Darstellung und/oder Funktionen 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ählten Kunden 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 oder implementieren zu können.
Herbei kann es sein, dass der ausgewählter Datensatz über mehrere Aufrufebenen übergeben werden muss und der direkte Aufrufer dennoch bekannt sein muss.

GetTheCallerOfTheCaller_Schema

Nehmen wir an, es existiert eine Hauptmaske, auf der ein Kundendatensatz ausgewählten werden kann. Auf einer weiteren Maske (1. Maske), sollen nun alle Aufträge des ausgewählten Kunden angezeigt werden. Diese Maske soll über die Hauptmaske aufgerufen werden. Über eine 2. Maske, welche über die 1. Maske aufgerufen werden soll, sollen die Adressdaten des Kunden angezeigt werden.

GetTheCallerOfTheCaller2

Um nun die benötigten Information, ausgewählter Kunden in der Hauptmaske, auf der 2. 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));
    }
}

 

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

Sunday, January 24, 2010 8:00:59 PM (Mitteleuropäische Zeit, UTC+01:00)  Axel Kühn  #    Comments [0] -


Comments are closed.
Über/Kontakt

  




© Copyright 2012 Mathias Füßler
Sign In
Categories
Archiv
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
Blogroll
Statistik
Total Posts: 107
This Year: 0
This Month: 0
This Week: 0
Comments: 19





All Content © 2012, Mathias Füßler
DasBlog theme 'Business' created by Christoph De Baene (delarou)