2017-10-04 45 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);

這樣刷新數據,而不會導致電網重繪。