Oracle APEX IG-基于数据库表的页面加载检查行选择器

时间:2018-11-30 09:26:00

标签: oracle oracle-apex

当页面加载/刷新时,是否可以根据从数据库表中检索到的ID列表检查交互式网格上的行选择器?

我已经成功地通过使用getSelectedRecords()检索检查值来成功填充了表格。

我希望在重新加载页面时保留对这些行的检查。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不明白为什么您需要从表中获取这些值,并且您已经用getSelectedRecords函数标记了这些值。 在这种情况下,您的问题将与以下链接非常相​​似。 Setting focus to a previously selected row in IG after Page Submit

如果您需要从表中获取值以标记交互式网格,则可能的解决方案如下所示。

1-创建一个静态服务,为您提供需要标记的行的ID。就像20、30、40 ...

2-创建一个动态操作,以在加载页面或交互式网格后执行。此动态操作应执行javascript代码

3-您的javascript代码应从您创建的Restful服务中获取代码。在该服务中,您可以执行要返回适当代码的SQL查询。

4-获取需要标记的行的代码,可以使用以下代码标记行。

grid.setSelectedRecords([
   grid.model.getRecord(20), 
   grid.model.getRecord(30),
   grid.model.getRecord(40)
]);

这不是完整的解决方案,只是您想象中的解决问题的一种可能方法。

UPD。 您可以使用以下代码在chrome控制台中轻松测试此方法: 您可以使用一项而不是烦躁不安。在这种情况下,您的代码应如下所示:

//put in gridID the id of your IG
var gridID = "your_id";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");

//the item "PX_ITEM" contains all the IDs separated by ","
//change "PX_ITEM" for the correct name of your item
var ids = apex.item('PX_ITEM').getValue();
var aIds = ids.split(',');

//create an array of records
var aRecords = []
for(var i = 0; i < aIds.length; i++) {
    aRecords.push(grid.model.getRecord(aIds[i]));
}

//Set the selected records for your array of records
grid.setSelectedRecords(aRecords)

要在您的应用程序中测试此代码,您需要创建一个动态操作以在加载页面后执行。该动作应执行javascript代码(上面的代码)。记住要创建一个项目来存储所有需要选择的ID,并在所需输入上方的代码中进行更改。 祝你好运。