我们如何禁用和启用 X++ 表单 Dynamics AX 上的字段?
Field1 是一个带有选项 option1 和 option2 的枚举。
我们有以下场景:
如果 Field1 为 option1,则应启用 Field2 字段,并应禁用/只读 Field3 字段
如果 Field1 是选项 2,则应启用 Field3 字段,而应禁用/只读 Field2
3/ 此外,当加载表单时,对于现有记录,Field3 和 Field2 字段应根据 Field1 的当前值启用/只读
您可以在表单的数据源上重写方法
active()
,例如
public int active()
{
FormDataSource fds;
int ret;
ret = super();
fds = this.dataSource();
fds.object(fieldNum(MyTableName, Field2)).allowEdit(MyDataSourceName.Field1 == option1);
fds.object(fieldNum(MyTableName, Field3)).allowEdit(MyDataSourceName.Field1 == option2);
return ret;
}
如果用户无法修改
Field1
值,那就足够了。如果可以修改它,那么创建一个新方法是有意义的,例如setFieldAccess()
与上面的逻辑类似,并从数据源 active()
方法和数据源字段 modified()
的 Field1
方法中调用这个新方法。