我有一个包含两个数据源的表单,这些数据源通过外连接进行链接。它使用Form Datasource Unit of Work框架写入数据库。
截至目前,从一个数据源表单控件移动到另一个表单数据源控件时,将写入数据。我想只在单击按钮时使用框架的表单数据源单元激活/写入。
从一个Form Control移动到另一个Form Control时,有没有办法阻止自动写入功能?
答案 0 :(得分:1)
首先看看HowTo: Unit of work implementation for a Form,看看你是否符合这一点。官方文件是Change Group and Optional Record Modes。
写入是因为您“留下”记录,请参阅Event Method Sequences when Focus is Removed from a Record。
这是validateWrite
返回true时的序列:
这是validateWrite
返回false时的序列:
因此,当您不想保存时,可以覆盖validateWrite
以静默方式返回false。当 要保存时,请务必致电super()
!
或者您可以自己致电leaveRecord
强制写一下:
if (record_ds.leaveRecord(true))
{}
当调用record_ds.leaveRecord(true)时,请注意它可能无法保存记录,例如如果验证失败。在这种情况下,leaveRecord将返回false。
观察您正在“反对”标准工作,这将使您的表单与其他表单的工作方式不同。