AX2012 - 通过创建获取新的主要 table 字段值
AX2012 - Get new primary table field value by creation
我有一个有两个网格的表格。每个网格都有自己的数据源。
欲了解更多信息,请查看所附图片。
根据第一格中的第i行select,第二格的内容会发生变化。
现在我的问题是:
如果我在第一个网格上创建一个新行,我无法在第二个网格中输入值,因为 ax 不给我一个新的 "combinationID" (Primary field, INT)
我该如何解决这个问题?
这看起来像一个 parent-child 表格,上面的网格是您的 "header",下面的网格是您的 "lines"。
如果 CombinationID
是您的主键,它可能应该通过数字序列或以某种方式唯一生成。
在表单上,DataSource MDISSearchDimensions
的 属性 JoinSource
应设置为 MDISAccountSearchTerms
。它将使用 table 关系,但您需要指定它们已连接。
然后从 header 设置 CombinationID
后,您只需要确保行得到它。在 table MDISSearchDimensions
上,添加一个名为 initFromMDISAccountSearchTerms(MDISAccountSearchTerms _MDISAccountSearchTerms)
的方法,它设置 CombinationID
并在 MDISSearchDimensions.initValue()
.
中调用此方法
您应该禁用第二个数据源的 InsertIfEmpty
属性。
第二个数据源的 initValue
方法将 CombinationId
字段(提供适当的关系)初始化为主 CombinationId
数据源值,但现在它在主数据源字段之前这样做有一个值。
如果想继续使用,您还有其他选择;在第二个数据源的 validateWrite
中手动设置:
public boolean validateWrite()
{;
MDISAccountDimension.CombinationId = MDISAccountSearchTerms.CombinationId;
return super();
}
因此它不会再因设置 Mandatory
而失败。
您应该隐藏第二个网格中的 CombinationId
以避免用户错误。
我有一个有两个网格的表格。每个网格都有自己的数据源。 欲了解更多信息,请查看所附图片。
根据第一格中的第i行select,第二格的内容会发生变化。
现在我的问题是: 如果我在第一个网格上创建一个新行,我无法在第二个网格中输入值,因为 ax 不给我一个新的 "combinationID" (Primary field, INT)
我该如何解决这个问题?
这看起来像一个 parent-child 表格,上面的网格是您的 "header",下面的网格是您的 "lines"。
如果 CombinationID
是您的主键,它可能应该通过数字序列或以某种方式唯一生成。
在表单上,DataSource MDISSearchDimensions
的 属性 JoinSource
应设置为 MDISAccountSearchTerms
。它将使用 table 关系,但您需要指定它们已连接。
然后从 header 设置 CombinationID
后,您只需要确保行得到它。在 table MDISSearchDimensions
上,添加一个名为 initFromMDISAccountSearchTerms(MDISAccountSearchTerms _MDISAccountSearchTerms)
的方法,它设置 CombinationID
并在 MDISSearchDimensions.initValue()
.
您应该禁用第二个数据源的 InsertIfEmpty
属性。
第二个数据源的 initValue
方法将 CombinationId
字段(提供适当的关系)初始化为主 CombinationId
数据源值,但现在它在主数据源字段之前这样做有一个值。
如果想继续使用,您还有其他选择;在第二个数据源的 validateWrite
中手动设置:
public boolean validateWrite()
{;
MDISAccountDimension.CombinationId = MDISAccountSearchTerms.CombinationId;
return super();
}
因此它不会再因设置 Mandatory
而失败。
您应该隐藏第二个网格中的 CombinationId
以避免用户错误。