Accessing datasource field properties

From Axaptapedia

Jump to: navigation, search

Often it is useful to be able to access the datasource field properties on a form through X++. This is essential for modifying the allowEdit property at run-time for example.

The following code can be used to set the allowEdit of the InventTable.ItemName field on a form.

FormDataObject  fldItemName;
boolean         allowEdit = false; //This would set according to some criteria
  
fldItemName = inventTable_DS.object(fieldNum(InventTable,ItemName));
fldItemName.allowEdit(allowEdit);

Download this project for an example form showing this technique.

To prevent editing code when you add fields to the table, call the fieldproperties using the dictionary classes:

FormDataObject  fldItemName;
boolean         allowEdit = false; //This would set according to some criteria
SysDictTable    dictTable = new SysDictTable(this.table());
FieldId         currentFieldId;
;
for (currentFieldId = dictTable.fieldNext(0); currentFieldId; currentFieldId = dictTable.fieldNext(currentFieldId)) 
{
    fldItemName = this.object(currentFieldId);
    if (fldItemName)
        fldItemName.allowEdit(allowEdit);
}

Code called from a method on the datasource itself. Check the fldItemName for null, System fields (eg 'ModifiedBy') are not present in the datasource, but is in the table.

Personal tools
Microsoft Community
Microsoft Dynamics Ax Community