Dynamics AX 2009:如何在Checkbox控件上以编程方式allowEdit

C. *_*fin 1 ax axapta dynamics-ax-2009

从本质上讲,这就是我面临的问题:

  1. 我想修改InventTrans表单
  2. 默认情况下,它将整个InventTrans数据源设置为AllowEdit = No.
  3. 我想在一个新的Enum字段上启用编辑(NoYes类型)

我应该将InventTrans数据源设置为AllowEdit = Yes然后痛苦地将数据源中的40多个字段更改为AllowEdit = No,或者有没有办法以编程方式迭代数据源的字段并按名称设置此属性?(请说有,或者同样简单的方法来做到这一点!)

提前致谢!

vuk*_*kis 6

这就是我尝试禁用所有字段的编辑方式:

DictTable    dictTable;
DictField    dictField;
int          fldCnt;
;
dictTable = new DictTable(tablenum(InventTrans));
for (fldCnt = 1; fldCnt <= dictTable.fieldCnt() ; fldCnt++)
{
    dictField = new DictField(tablenum(InventTrans), dictTable.fieldCnt2Id(fldCnt));
    info(strfmt("%1", dictField.id(),dictField.name()));
    InventTrans_DS.object(dictField.id()).allowEdit(false);
}
Run Code Online (Sandbox Code Playgroud)

编辑:更好的方法只迭代表单的DS'es字段:

DictTable           dictTable;
DictField           dictField;
int                 fldCnt;
QueryBuildFieldList qBFL;
;
qBFL = InventTrans_DS.query().dataSourceTable(tablenum(InventTrans)).fields();
for (fldCnt = 1; fldCnt <= qBFL.fieldCount() ; fldCnt++)
{
    dictField = new DictField(tablenum(InventTrans), qBFL.field(fldCnt));
    info(strfmt("%1 %2 ", dictField.id(),dictField.name()));
    if(InventTrans_DS.object(qBFL.field(fldCnt))) //exception recVersion for example
    {
        InventTrans_DS.object(qBFL.field(fldCnt)).allowEdit(false);
    }
}
Run Code Online (Sandbox Code Playgroud)