Bearbeiten von Formularfeldern beschränken II

Sollen in einem Formular nur bestimmte Felder zur Bearbeitung freigegeben sein, kann man die Eigenschaft allowEdit sämtlicher Felder der DataSource der Tabelle entsprechend umsetzen.

Einfacher geht’s mit folgendem Codebeispiel, welches in der init-Methode der DataSource eingebunden wurde und - im konkreten Fall in der Tabelle SalesLine - nur bei einem einzigen Feld die Bearbeitung erlaubt.

Im Gegensatz zu einem früher veröffentlichten Beitrag mit dem gleichen Thema werden bei diesem Codebeispiel auch Array-Felder korrekt berücksichtigt.

public void init()
{
    FormDataObject  fdo;
    int             f;
    SysDictTable    sysDictTable;
    MapEnumerator   fdoMapEnumerator;
    ;
    sysDictTable = new SysDictTable(tablenum(SalesLine));
    for(f=1;f<=sysDictTable.fieldCnt();f++)
    {
        fdoMapEnumerator = new MapEnumerator(formDataSourceArrayFieldExtObjects(salesLine_ds, sysDictTable.fieldCnt2Id(f)));
        while (fdoMapEnumerator.moveNext())
        {
            fdo = fdoMapEnumerator.currentValue();
            if(fdo)
            {
                fdo.allowEdit(false);
            }
        }
    }

    fdo = salesLine_ds.object(fieldnum(SalesLine, QtyOrdered));
    fdo.allowEdit(true);
}

Getestet in Dynamics AX 2009

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2009

 
 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 2006-2024 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