Dynamics AX Blog - lookup - Beiträge von 2015

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

AX 2012: Display-Methoden im Lookup II

Mit Hilfe der Klasse SysTableLookup kann man sich den Lookup von Formularfeldern anpassen. Über die Methode addLookupMethod() können in diese Lookup-Formulare auch Display-Methoden eingebunden werden. Wichtig dabei ist lediglich, daß im Lookup alle Felder eingebunden werden (beispielsweise über addSelectionField()), die von der jeweiligen Display-Methode zur Ermittlung benötigt werden.

Will man beispielsweise das Lookupformular der Artikelnummer um den Produktnamen erweitern, kann man dafür die folgende Methode nutzen. Hierbei ist beispielsweise das Feld Product der InventTable nur enthalten, um die Display-Methode itemName() im Lookup verwenden zu können.

public client static void lookupItemId(FormStringControl _lookupCtrl)
{
    sysTableLookup sysTableLookup;
    query query;
    QueryBuildDataSource qbds_inventTable;

    query = new query();

    qbds_inventTable = query.addDataSource(tableNum(inventTable));

    sysTableLookup = sysTableLookup::newParameters(tableNum(inventTable), _lookupCtrl);
    sysTableLookup.parmQuery(query);
    sysTableLookup.addLookupfield(fieldNum(inventTable, itemId));
    sysTableLookup.addLookupMethod(tableMethodStr(inventTable, itemName));
    sysTableLookup.addLookupfield(fieldNum(inventTable, NameAlias));
    sysTableLookup.addLookupfield(fieldNum(inventTable, ItemType));
    sysTableLookup.addSelectionField(fieldNum(inventTable, product));

    sysTableLookup.performFormLookup();
}

 
 
 

Lookup eines FormControls übersteuern und dabei Feldgruppen verwenden

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();
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
September 2015
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
282930 
© 2006-2026 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