2017-10-04 41 views
0

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

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

这将获取正确的所有记录(包括更新的),并重绘互动电网。 Id''like变更变得可见而不重绘。我想通过行迭代,使用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)也是受欢迎的。

回答

0

经过进一步的研究,我发现了一种替代方法(我不确定它是多么危险或稳定,但它的工作原理)。看来你可以通过获取数据网格模型,然后您可以使用通过获取所有的它的记录刷新行:

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

这样刷新数据,而不会导致电网重绘。