更改所选记录的按钮

时间:2019-04-01 13:55:59

标签: oracle-apex

我有一个包含一堆记录的交互式网格,并且我想在页面上设置一个按钮,以更改当前所选所有记录中的一列。

运行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 个答案:

答案 0 :(得分:1)

最终没有人回应,所以我花了很多时间才终于找到解决方案。

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');
}

由于某种原因,我找到的所有解决方案都没有用。但是我从这些解决方案中学到了东西,并编写了满足我需要的简单代码。

此外,我想进行设置,以便可以在隐藏列上设置此值,我通过使列可见和可编辑来实现此目的,但是随后在运行页面时,我单击了该列并将其隐藏,并将当前视图设置为默认报告。

如果有人偶然发现了这个问题,希望对您有所帮助。