Кнопка для изменения выбранных записей - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть интерактивная сетка с кучей записей, и я хочу настроить кнопку на странице, которая изменяет один столбец во всех выбранных записях.

При запуске 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.

1 Ответ

1 голос
/ 05 апреля 2019

Закончилось тем, что никто не ответил, поэтому я потратил много времени и, наконец, нашел решение.

var g = apex.region('myIG').widget().interactiveGrid('getViews','grid');  
var r = g.getSelectedRecords();  
for(i = 0; i < r.length; i++) {   
g.model.setValue(r[i], 'myColumn', 'Value');
}

По какой-то причине ни одно из найденных мной решений не сработало. Но я учился на этих решениях и сделал этот простой кусок кода, который делает то, что мне нужно.

Кроме того, я хотел настроить так, чтобы я мог сделать это заданное значение для скрытого столбца, я достиг этого, просто сделав столбец видимым и редактируемым, но затем, запустив страницу, я щелкнул по столбцу и спрятал его, и установите текущий вид в качестве отчета по умолчанию.

Если кто-нибудь наткнется на этот вопрос, надеюсь, он поможет.

...