Dynamics AX Blog - lookup - Beiträge vom Februar 2012

Momentan angezeigt werden nur Beiträge, bei denen das Schlagwort »lookup« eingetragen wurde. Filter entfernen
Momentan angezeigt werden nur Beiträge vom »Februar 2012«. Filter entfernen

AX 2012: Eigene Lookups mit Hilfe der Klasse SysLookupMultiSelectCtrl erstellen

In AX 2012 gibt es über die Klasse SysLookupMultiSelectCtrl eine neue Möglichkeit, um bei einem Formularfeld, welches weder an eine DataSource noch an einen Extended Datatyp gebunden ist, dem Benutzer ein Lookup-Formular anzubieten.

Diese Klasse hat gegenüber der Klasse SysTableLookup, die es schon in Dynamics AX 2009 gegeben hat, sowohl einige Vorteile aber auch ein paar Nachteile:

Vorteile

  • Aufruf aus der init-Methode eines Formulares aus möglich (d.h. es muss die lookup-Methode des jeweiligen Feldes nicht überschrieben werden)
  • Mehrfachauswahl von Werten ist möglich

Nachteile

  • Es können keine (Display-)Methoden in den Lookup eingebunden werden
  • Man muss den Lookup verwenden um einen Wert auszuwählen, eine "freie" Eingabe ist nicht möglich

 
 
 

Eigenes Lookup-Formular mit Hilfe der Klasse SysTableLookup gestalten

Ab und an kommt man als Entwickler in die Verlegenheit, ein Formularfeld, welches weder an eine Datenquelle (DataSource) oder einen Extended Datatyp gebunden ist, um ein Lookup-Formular zu erweitern. Dafür stellt Dynamics AX die Klasse SysTableLookup zur Seite, die man in die lookup-Methode des jeweiligen Feldes einbinden kann.

Hier ein einfaches Beispiel unter Verwendung eines Queries, bei dem prinzipiell ein Lookup auf die Kundengruppen möglich sein soll, aber nur bestimmte angezeigt werden sollen. Diese Einschränkung kann über sysQuery::findOrCreateRange abgebildet werden.

Das Beispiel funktioniert übrigens sowohl in Dynamics AX 2009 als auch AX 2012.

public void lookup()
{
    sysTableLookup sysTableLookup;
    query query;
   
    super();

    query = new query();
    query.addDataSource(tableNum(custGroup));
   
    sysQuery::findOrCreateRange(query.dataSourceTable(tableNum(custGroup)), fieldNum(custGroup, name)).value("*inter*");
   
    sysTableLookup = sysTableLookup::newParameters(tableNum(custGroup), this);
    sysTableLookup.parmQuery(query);
    sysTableLookup.addLookupfield(fieldNum(custGroup, custGroup));
    sysTableLookup.addLookupfield(fieldNum(custGroup, name));
    sysTableLookup.performFormLookup();
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
Februar 2012
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
272829 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu