I got an Interactive grid with a Switch column ('Yes'/'No'). I have a requirement that only one record in the grid should have a Switch column value equals to ‘Yes’ ('Y').
If user enters a new row, and there is already a row in the grid with Switch column equals to “Y”, then the new row's value of the Switch column should be set to ‘No’ ('N').
I am looping through the Interactive grid to get values of the Switch column, to determine if any value equals to ‘Y". I've got the following function, which suppose to return true if 'Y' is found:
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
});
}
However the function does not return the boolean.
I am using this function in a Row Initialization DA of the Interactive grid:
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"});
}
}
I am not getting proper true or false boolean. All I'm getting in the console is ‘undefined’. And therefore the logic does not work as expected. I also tried:
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;
});
}
It did not work either.
Can you please check the code and let me know what is the issue with it?
Here is the demo if you want to see the console: https://apex.oracle.com/pls/apex/f?p=108817:23:112338007040585::::P23_CUSTOMER_ID:1
User: guest Passw: demo2023
Thank you.
Via Active questions tagged javascript - Stack Overflow https://ift.tt/qh68n5x
Comments
Post a Comment