我得到了一个带有“切换”列(“是”/“否”)的交互式网格。我要求网格中只有一条记录的Switch列值应该等于'Yes'('Y')。
如果用户输入新行,并且网格中已经有一行的“切换”列等于“Y”,则新行的“切换”列的值应设置为“否”('N')。
我正在遍历交互式网格以获取Switch列的值,以确定是否有任何值等于“Y”。我得到了以下函数,如果找到'Y',它将返回true:
function mainInd (gridId, colName) {
//Get the Interactive grid widget instance
var ig$ = apex.region(gridId).widget();
var model = ig$.interactiveGrid("getCurrentView").model;
var colValue;
//Loop through the records in the interactive grid
ig$.interactiveGrid("getViews", "grid").model.forEach(function(record) {
console.log('***************mainInd() - record: ' + record );
colValue = model.getValue(record,colName).v;
console.log('***************mainInd() - colValue: ' + colValue );
return Boolean(colValue === 'Y');
//return colValue === 'Y'; //did not work either
});
}
但是,该函数不返回布尔值。
我正在交互式网格的行初始化DA中使用此函数:
var model = this.data.model,
rec = this.data.record,
meta = model.getRecordMetadata(this.data.recordId);
if ( meta.inserted )
{
if ( mainInd("BP","MAIN_BUYER_IND") ){
console.log('**************Row Init DA - expected true: ' + mainInd("BP","MAIN_BUYER_IND") );
model.setValue(rec,"MAIN_BUYER_IND", {d:"No", v:"N"});
} else {
console.log('**************Row Init DA - expected false: ' + mainInd("BP","MAIN_BUYER_IND") );
model.setValue(rec,"MAIN_BUYER_IND", {d:"Yes", v:"Y"});
}
}
我没有得到正确的true或false布尔值。我在控制台得到的都是“未定义”。因此逻辑并不像预期的那样工作。我也试过:
function mainInd (gridId, colName) {
//Get the interactive grid widget instance
var ig$ = apex.region(gridId).widget();
var model = ig$.interactiveGrid("getCurrentView").model;
var colValue;
//Loop through the records in the interactive grid
ig$.interactiveGrid("getViews", "grid").model.forEach(function(record) {
console.log('***************mainInd() - record: ' + record );
colValue = model.getValue(record,colName).v;
if (colValue === 'Y') {
console.log('***************mainInd() - colValue: ' + colValue );
return true;
}
return false;
});
}
它也没有工作。
你能检查一下代码,让我知道它有什么问题吗?
如果你想看控制台,下面是演示:https://apex.oracle.com/pls/apex/f?p=108817:23:112338007040585::::P23_CUSTOMER_ID:1
用户:guest密码:视频2023
谢谢你。
1条答案
按热度按时间92dk7w1h1#
我想你不能从forEach循环中返回任何东西,你只能在循环中设置一个值。你必须返回一个循环外的值。下面是我最后一个运行良好的函数代码: