0

我有一个案例,在交互式网格行中更新和保存某些列会导致其他一些行被更新。默认情况下,仅刷新更改的行,对(现在更新的)行的进一步更改将导致Current version of data in database has changed错误。我设法通过在自定义上挂接一个动态操作interactivegridsave(在交互网格中保存更改后触发)来解决这个问题。动作本身就是Execute JavaScript Code执行这个(注意这region_static_id是一个占位符):

apex.region("region_static_id").widget().interactiveGrid("getActions").invoke("refresh");

这将正确获取所有记录(包括更新的记录)并重新绘制交互式网格。我希望更改变得可见而无需重绘。我想过遍历行,使用row-refresh操作通过 id 更新每一行,但我不知道它是如何工作的(或者至少不知道如何正确调用它)。此操作应该可用,因为它正确列在我执行此操作时获得的可用操作列表中:

apex.region("region_static_id").widget().interactiveGrid("getActions").list().forEach(function(a){console.log("Action Label: "+a.label+", Name: "+a.name+(a.choice!==undefined?", Choice: "+a.choice:""));});

所以,问题是:

如何通过调用row-refresh交互式网格中的操作来刷新行?

刷新行的替代方案(最好通过指定行 ID)也受到欢迎。

4

1 回答 1

1

经过进一步的研究,我找到了另一种方法(我不确定它有多hackish或稳定,但它确实有效)。似乎您可以通过获取数据网格模型来刷新行,然后您可以使用以下方法获取其所有记录:

var model = apex.region("predmet_dg").widget().interactiveGrid("getViews").grid.model;
model.fetchRecords(model._data);

这种方式刷新数据而不会导致网格重绘。

于 2017-10-05T10:10:49.160 回答