仅刷新Aviarc数据集的当前行?

时间:2012-09-04 05:28:32

标签: ajax dataset aviarc

TLDR:是否可以刷新单个数据集行?运行ajax工作流后,我想刷新数据库中的当前行,但不刷新整个数据集(因为它可能非常大而且运行整个查询的速度很慢)。


我有一个屏幕,其中包含一个显示可能非常大的数据集的记录表,以及一个针对当前数据集行运行验证例程的按钮。最初我通过屏幕操作运行验证工作流程,但这意味着整个屏幕将在验证完成时重新加载,只在一行更改时刷新整个数据集。

问题是我无法轻松访问将更改提​​交到数据库的数据集;它与ajax调用提交的数据集不同,因此当ajax请求完成时,更改不会自动发送回屏幕。

2 个答案:

答案 0 :(得分:3)

通常我要做的是在提交工作流程中手动将更改从单行编辑数据集复制回列表数据集,并避免对数据库运行单独的查询以在稍后阶段获取更新的行。

答案 1 :(得分:2)

由于我无法访问编辑行的数据集,因此我需要先从数据库中检索已编辑的行,然后将该行复制回屏幕上显示的实际数据集。例如:

<!-- retrieve just the edited row -->
<dataset name="temp-foo" databroker="bar" query="get-bar-by-id">
  <param name="id" value="{$foo.id}" />
</dataset>

<!-- copy the result back to the original dataset -->
<copy-row from-dataset="temp-foo" to-dataset="foo" />

目前,单行中没有<refresh-dataset>等效项,因此您需要使用临时数据集(或已编辑的数据集)并将结果复制回原始数据集。