Lookup eines FormControls übersteuern und dabei Feldgruppen verwenden
20.03.2015Microsoft Dynamics AX (Axapta)
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
Dynamics AX 2012
|
|
|
|
|
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um einen Lookup eines Feldes zu übersteuern oder einen Lookup für ein Feld zu erstellen, welches standardmässig keinen Lookup anbietet, kann man die lookup()-Methode des FormControls überschreiben. So weit nichts wirklich neues.
Das folgende Snippet zeigt, wie man in einer solchen lookup()-Methode statt fixen Feldlisten vorhandene Feldgruppen verwenden kann. Dies hat den Vorteil, daß sich auch dieser lookup() dynamisch mitändert, wenn jemand die jeweilige Feldgruppe modifiziert.
Display-Methoden werden im folgenden nicht berücksichtigt, da nicht sichergestellt werden kann, daß alle für die Display-Methoden notwendigen Felder Teil der Feldgruppe sind (siehe dazu auch dieser Blog-Beitrag).
public void lookup() { SysTableLookup sysTableLookup; Query query; QueryBuildDataSource qbds; SysDictTable sysDictTable = new sysDictTable(tableNum(CustTable)); SysDictFieldGroup sysDictFieldGroup; Counter f; query = new query(); qbds = query.addDataSource(tableNum(CustTable)); sysTableLookup = sysTableLookup::newParameters(tableNum(CustTable), this); sysTableLookup.parmQuery(query); sysDictFieldGroup = new SysDictFieldGroup(tableNum(CustTable), identifierStr(CaseMoreInformation)); for (f=1;f<=sysDictFieldGroup.numberOfFields();f++) { if( !sysDictFieldGroup.methodName(sysDictFieldGroup.field(f))) // no display methods { sysTableLookup.addLookupfield(sysDictFieldGroup.field(f), (sysDictTable.primaryKeyField() == sysDictFieldGroup.field(f))); } } sysTableLookup.performFormLookup(); }