我有一个有两个网格的表格。每个网格都有自己的数据源。 有关更多信息,请查看附图。
在依赖我在第一个网格中选择哪一行时,第二个网格的内容将会改变。
现在我的问题: 如果我在第一个网格上创建一个新行,我无法在第二个网格中输入值,因为ax不会给我一个新的" combinationID" (主要领域,INT)
我该如何解决这个问题?
答案 0 :(得分:1)
这看起来像一个父子表单,其中上部网格是您的"标题"而下限是你的"行"。
如果CombinationID
是您的主键,它可能应该通过数字序列生成或以某种方式唯一生成。
在表单上,DataSource MDISSearchDimensions
的属性JoinSource
应设置为MDISAccountSearchTerms
。它将使用表关系,但您需要指定它们已加入。
然后,一旦从标题设置了CombinationID
,您就需要确保这些行获得它。在表MDISSearchDimensions
上,添加一个名为initFromMDISAccountSearchTerms(MDISAccountSearchTerms _MDISAccountSearchTerms)
的方法,该方法设置CombinationID
并在MDISSearchDimensions.initValue()
内调用此方法。
答案 1 :(得分:0)
您应该禁用第二个数据源的InsertIfEmpty
属性。
第二个数据源的initValue
方法将CombinationId
字段(提供适当的关系)初始化为主CombinationId
数据源值,但现在它在master数据源字段具有值。
如果想要保留它,你还有另一种选择;在第二个数据源的validateWrite
中手动设置它:
public boolean validateWrite()
{;
MDISAccountDimension.CombinationId = MDISAccountSearchTerms.CombinationId;
return super();
}
因此,由于设置了Mandatory
,它将不再失败。
您应该隐藏第二个网格中的CombinationId
以避免用户错误。