单击保存按钮后或以固定时间间隔如何自动刷新交互式网格?
Posted
技术标签:
【中文标题】单击保存按钮后或以固定时间间隔如何自动刷新交互式网格?【英文标题】:How to automatically refresh an interactive grid after clicking on save button or at a fixed interval? 【发布时间】:2020-06-17 14:07:26 【问题描述】:我在顶点页面上有一个页面项目和一个交互式网格。页面项目是选择列表类型,并根据选择网格中的数据发生变化。我在网格中有默认的 Add row 按钮来添加行。单击网格中的 SAVE 按钮后,我想刷新网格。如果网格在固定间隔(比如 2 或 5 秒)后自动刷新,这对我也有好处。
对于当前场景,行正在添加,但在单击 SAVE 后并未反映在交互式网格中的页面上,但可以在数据库的表中找到条目。重新加载页面后,条目将反映在网格中。
注意:我正在通过数据库链接获取数据。
【问题讨论】:
我不太了解你的情况。据我所知,交互式网格中的 add row 按钮会在交互式网格中添加一个空的新行。按下 SAVE 按钮后,您的更改将被存储。 SAVE 按钮是否在视觉上删除了添加的行?或者您是否使用交互式报告而不是交互式网格? 添加行按钮将打开一个新的模式窗口,您可以在其中输入详细信息,然后按 SAVE 后,模式关闭,您希望新行自动显示在报告中吗? 是的,理想情况下它应该将添加的行保存在网格中,但对我来说,在视觉上单击“保存”按钮后,该行将从网格中删除,并且在重新加载页面后只有它可见。我相信这是因为我我正在处理一个数据库链接,因此行没有在网格中返回。 【参考方案1】:有一种方法可以挂钩交互式网格的内置保存操作。
以下步骤将创建一个自定义事件,监听 interactivegridsave 事件。在交互式网格完成自己的保存过程后,APEX 会触发该事件。确保事件名称拼写正确。
创建动态操作 何时 → 自定义 自定义事件 → interactivegridsave 选择类型 → 区域 地区 → 刷新操作(可能关闭 Fire on Initialization)我想这会对你有所帮助。
【讨论】:
【参考方案2】:当您向交互式网格添加行并点击保存按钮时,它会刷新并且您可以看到 IG 已更新。
如果您需要每 5/10 秒刷新一次区域或页面,请按照以下步骤操作:
-
为 IG 定义静态 ID,例如“IG1”。
在页面属性中,导航到页面加载时执行并输入:
var model = apex.region("IG1").widget().interactiveGrid("getViews").grid.model;
setInterval(function() model.fetchRecords(model._data); , 10000);
这将每 10 秒刷新一次 IG。您可以将其设置为 2 或 5 秒。
【讨论】:
只要交互式网格处于只读模式,这将起作用。想想启用编辑时会发生什么,您当前正在编辑数据并且每 x 秒触发一次刷新。你应该放弃你的改变吗?它应该每次都问该怎么做吗?我不认为这是要走的路。 @Monica Godboy - 我已按照您的步骤操作,但并没有解决问题。虽然我在设定的时间间隔后看到了刷新,但它不会在刷新时获取数据。网格也可以编辑。 @Giliam - 在网格上启用了编辑,并且您指向的问题仍然存在。你有解决方案吗。我认为刷新应该只在点击保存后触发。【参考方案3】:我有一些与过滤器类似的东西,如果我添加了一个由于过滤器而不应显示的行,它仍然会存在,直到我刷新。也许如果我改变了一些东西让它不再出现,它保存了,但仍然出现了。
我所做的是保存后提交页面。
我有一个点击选择类型 jQuery 选择器的动态操作,选择器是 [data-action="save"]
那么操作就是提交页面。
这样点击保存后,它会提交整个页面并重新加载。 希望这能满足您的需求。
【讨论】:
以上是关于单击保存按钮后或以固定时间间隔如何自动刷新交互式网格?的主要内容,如果未能解决你的问题,请参考以下文章