C. *_*fin 1 ax axapta dynamics-ax-2009
从本质上讲,这就是我面临的问题:
我应该将InventTrans数据源设置为AllowEdit = Yes然后痛苦地将数据源中的40多个字段更改为AllowEdit = No,或者有没有办法以编程方式迭代数据源的字段并按名称设置此属性?(请说有,或者同样简单的方法来做到这一点!)
提前致谢!
这就是我尝试禁用所有字段的编辑方式:
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)