当页面加载/刷新时,是否可以根据从数据库表中检索到的ID列表检查交互式网格上的行选择器?
我已经成功地通过使用getSelectedRecords()
检索检查值来成功填充了表格。
我希望在重新加载页面时保留对这些行的检查。
任何帮助将不胜感激。
答案 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,并在所需输入上方的代码中进行更改。 祝你好运。