仅在按下按钮时写入数据库

时间:2013-01-04 21:06:37

标签: forms datasource axapta unit-of-work dynamics-ax-2012

我有一个包含两个数据源的表单,这些数据源通过外连接进行链接。它使用Form Datasource Unit of Work框架写入数据库。

截至目前,从一个数据源表单控件移动到另一个表单数据源控件时,将写入数据。我想只在单击按钮时使用框架的表单数据源单元激活/写入。

从一个Form Control移动到另一个Form Control时,有没有办法阻止自动写入功能?

1 个答案:

答案 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时的序列:

  1. leaveRecord return true
  2. validateWrite return true
  3. 写作
  4. 写的
  5. leaveRecord return true
  6. leaveRecord返回true(再次)
  7. 这是validateWrite返回false时的序列:

    1. leaveRecord return true
    2. validateWrite return false
    3. leaveRecord return false
    4. 因此,当您不想保存时,可以覆盖validateWrite以静默方式返回false。当 要保存时,请务必致电super()

      或者您可以自己致电leaveRecord强制写一下:

      if (record_ds.leaveRecord(true))
      {}
      

      当调用record_ds.leaveRecord(true)时,请注意它可能无法保存记录,例如如果验证失败。在这种情况下,leaveRecord将返回false。

      观察您正在“反对”标准工作,这将使您的表单与其他表单的工作方式不同。