使用ROW-REFRESH动作使用JavaScript刷新交互式网格



我有一个情况,在交互式网格行中更新并保存某些列会导致其他一些行更新。默认情况下,只有更改的行会刷新,并且对(现在更新)行的进一步更改将导致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)的替代方案。

在进一步研究之后,我找到了另一种方法(我不确定它的刺伤或稳定性如何,但有效)。看来您可以通过获取数据网格模型来刷新行,然后使用以下方式使用:

来获取其所有记录
var model = apex.region("predmet_dg").widget().interactiveGrid("getViews").grid.model;
model.fetchRecords(model._data);

这样,可以刷新数据而不会引起网格重新绘制。

最新更新