Oracle APEX IG - проверка селектора строк при загрузке страницы на основе таблицы БД - PullRequest
0 голосов
/ 30 ноября 2018

Можно ли проверить селектор строк в Интерактивной сетке, когда страница загружается / обновляется на основе списка идентификаторов, извлеченных из таблицы БД?

Мне удалось заполнить таблицу путем извлеченияпроверенные значения с помощью getSelectedRecords().

Я хочу, чтобы эти строки оставались отмеченными при перезагрузке страницы.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 декабря 2018

Я не понял, зачем вам нужно извлекать эти значения из таблицы, а у вас уже есть значения, помеченные функцией getSelectedRecords.В этом случае ваша проблема будет очень похожа на следующую ссылку. Установка фокуса на ранее выбранную строку в IG после отправки страницы

Если вам нужно извлечь значения из таблицы, чтобы затем отметить вашу интерактивную сетку, то возможное решение будет выглядетьвот так.

1 - Создайте спокойный сервис, чтобы дать вам идентификаторы линий, которые нужно отметить.Например, 20, 30, 40 ...

2 - Создать динамическое действие, которое нужно выполнить после загрузки страницы или интерактивной сетки.Это динамическое действие должно выполнить код javascript

3 - Ваш код javascript должен получить коды из созданной вами службы покоя.Там в этом сервисе вы выполняете 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 (код выше).Не забудьте создать элемент для хранения всех идентификаторов, которые вам нужно выбрать, и изменить их в коде над необходимыми входными данными.Удачи.

...