我试图通过编写下面的代码从Oracle APEX的交互式网格中获取所有选定的记录。我还已将#myStaticIgId声明为报告的静态ID。
var record, USER_NAME;
var x = '';
var l_role = $v("P2_ROLE");
var l_justification = $v("P2_JUSTIFICATION");
var l_date = $v("P2_DATE");
//Identify the particular interactive grid
var ig$ = apex.region("myStaticIgId").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("myStaticIgId").widget().interactiveGrid("getViews","grid").view$.grid("getSelectedRecords");
alert(selectedRecords.length);
//Loop through selected records
for (idx=0; idx < selectedRecords.length; idx++) {
//Get the record
record = model.getRecord(selectedRecords[idx][0]);
alert(record);
//Get the current value for USER_NAME
USER_NAME = model.getValue(record,"USER_NAME");
// USER_NAME = 'Abha';
alert('submit 2');
}
我为返回记录值而编写的警报语句向我返回了NULL。
您能建议一下,为了在记录变量中获取正确的记录值需要做什么。
关于, 艾卜哈
答案 0 :(得分:0)
我在这里测试了您的代码(进行了一些更改)并且可以正常工作。
2-转到chrome->打开控制台(按F12)->尝试以下代码:
var gridID = "orders";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");
var model = ig$.interactiveGrid("getViews","grid").model;
var selectedRecords = grid.getSelectedRecords();
for (idx = 0; idx < selectedRecords.length; idx++) {
record = model.getRecord(selectedRecords[idx][0]);
console.log(record);
console.log(model.getValue(record,"USER_NAME"));
}
答案 1 :(得分:0)
最后,我开始工作了。问题是主键列的顺序。主键列应该是列表中“ APEX $ ROW_SELECTOR”和“ APEX $ ROW_ACTION”之后的第一列。
我的主键列“ ASSIGNMENT_NUMBER”不是第一列,而“ USER_NAME”列是REgions中的第一列。因此,它适用于USER_NAME,不适用于“ ASSIGNMENT_NUMBER”。在将该列的顺序更改为第一列之后,它就起作用了。
希望这对别人也有帮助!
答案 2 :(得分:0)
我也有类似的问题。标志是“选定列表”(是/否)。我正在尝试将选定行的标志值从“否”更改为“是”,但是值未更改。 我正在使用以下代码。
function changeFlag(){
var isVerified;
var ig$ = apex.region("New").widget();
var grid = ig$.interactiveGrid("getViews","grid");
var model = ig$.interactiveGrid("getViews","grid").model;
var selectedRecords = apex.region("New").widget().interactiveGrid("getViews","grid").view$.grid("getSelectedRecords");
for (idx=0; idx < selectedRecords.length; idx++) {
record = model.getRecord(selectedRecords[idx][0]);
console.log(record);
isVerified = model.getValue(record,"FLAG");
console.log(isVerified);
if (isVerified === 'N') {
model.setValue(record,"FLAG", 'Y');
}
}
}
this link中提供了示例应用程序 我不明白我在哪里提出问题。
实际问题是使用IG更新批量记录的标志。我试图将值更改为“是”,然后将保存记录。因为这个问题,我被困住了。