У меня есть интерактивная сетка с кучей записей, и я хочу настроить кнопку на странице, которая изменяет один столбец во всех выбранных записях.
При запуске APEX 18.2 IG имеет целую группу столбцов, и я хочу изменить только одну из них, но на целую группу строк, поэтому мне нужна кнопка.IG имеет ROWID как PK, потому что фактический PK собран из 4 разных столбцов.
Я потратил некоторое время на поиск этой проблемы и нашел пару человек с решениями:
http://thejavaessentials.blogspot.com/2017/03/getting-selected-rows-in-oracle-apex.html
Это первое и самое простое решение.Но он не возвращает ни rowid, ни чего-либо подобного, он возвращает значение в первом столбце.
Затем я также нашел
http://apex -de.blogspot.com/2018/09/update-several-rows-in-tabular-form-grid.html
и
https://ruepprich.wordpress.com/2017/03/23/bulk-updating-interactive-grid-records/
, которые довольно похожи иКажется, это лучшее для меня, но я получаю ошибку Javascript в консоли: http://prntscr.com/n5wvqj
И я не очень много знаю Javascript, поэтому я не знаю, что пошло не так или как лучше это исправить.
Я установил динамическое действие при нажатии кнопки, которое выполняет Javascript, и у меня выбранный элемент, являющийся областью с именем CUR_STAT.var record;
// Определить конкретную интерактивную сетку
var ig $ = apex.region ("CUR_STAT"). widget ();
//Fetch the model for the interactive grid
var grid = ig$.interactiveGrid("getViews","grid");
//Fetch the model for the interactive grid
var model = ig$.interactiveGrid("getViews","grid").model;
//Fetch selected records
var selectedRecords = apex.region("CUR_STAT").widget().interactiveGrid("getViews","grid").view$.grid("getSelectedRecords");
//Loop through selected records and update value of the AVT_OBR column
for (idx=0; idx < selectedRecords.length; idx++)
{
//Get the record
record = model.getRecord(selectedRecords[idx][0]);
// set Value for column AVT_OBR on "D"
model.setValue(record,"AVT_OBR", 'D');
}
Столбец с именем AVT_OBR является списком выбора с отображаемыми значениями (DA, NE) и возвращаемыми значениями (D, N).Но я попытался использовать текстовое поле, и это не помогло.
Я хочу иметь возможность выбрать несколько столбцов и изменить данные в этих записях.
Если возможно, я бы также хотелбыть в состоянии изменить данные таким способом в скрытом столбце.Или если бы я мог получить все ROWID для выбранных записей и выполнить с ними блок PLSQL.