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);
}
}
}
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
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.
{
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