根据 Dynamics AX 中的另一个字段值启用或禁用表单网格上的字段

问题描述 投票:0回答:1

我们如何禁用和启用 X++ 表单 Dynamics AX 上的字段?

Field1 是一个带有选项 option1 和 option2 的枚举。

我们有以下场景:

  1. 如果 Field1 为 option1,则应启用 Field2 字段,并应禁用/只读 Field3 字段

  2. 如果 Field1 是选项 2,则应启用 Field3 字段,而应禁用/只读 Field2

3/ 此外,当加载表单时,对于现有记录,Field3 和 Field2 字段应根据 Field1 的当前值启用/只读

x++ dynamics-ax-2012 dynamics-ax-2009 dynamics-ax-2012-r2
1个回答
0
投票

您可以在表单的数据源上重写方法

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
方法中调用这个新方法。

© www.soinside.com 2019 - 2024. All rights reserved.