求助:如何通过列值动态选择Interactive Grid行?代码输出undefined
问题:JS动态选中Interactive Grid行失败,变量输出undefined
我希望通过向JS动态动作传入列值CSV,实现动态选择Interactive Grid的行。目前已编写了一段代码,但运行时无报错却无法选中行,所有console.log输出均为undefined,包括targetValues数组元素和循环中的columnValue。恳请提供帮助,哪怕能正常输出目标变量值也可。
原代码
var columnName = 'CRITERIA_ID'; var targetValues = $v("P13_SELECTED_VALUES").split(";"); //P13_SELECTED_VALUES is set to 112:113:115 via a static assignment DA that occurs directly before this console.log(targetValues[1]); console.log(targetValues[2]); console.log(targetValues[3]); var ig$ = apex.region("myIG_StaticID").widget(); var view = ig$.interactiveGrid("getCurrentView"); view.model.forEach(function(record) { var columnValue = view.model.getValue(columnName, record); console.log("Column Value: " + columnValue); if (targetValues.includes(columnValue)) { view.grid.selection.add(record); } });
问题分析与修复
1. targetValues数组元素undefined的原因
注释里明确P13_SELECTED_VALUES的值是112:113:115,但代码里用split(";")分割,导致整个字符串被当成一个数组元素,targetValues[1]、targetValues[2]、targetValues[3]自然不存在,输出undefined。
2. columnValue输出undefined的原因
Interactive Grid的model.getValue方法参数顺序错误,正确顺序是先传record,再传列名,原代码把列名放在前面,导致无法正确获取字段值。
修正后的代码
var columnName = 'CRITERIA_ID'; // 替换分割符为冒号,匹配P13_SELECTED_VALUES的格式 var targetValues = $v("P13_SELECTED_VALUES").split(":"); console.log(targetValues[0]); // 输出112 console.log(targetValues[1]); // 输出113 console.log(targetValues[2]); // 输出115 var ig$ = apex.region("myIG_StaticID").widget(); var view = ig$.interactiveGrid("getCurrentView"); view.model.forEach(function(record) { // 修正getValue参数顺序:record在前,列名在后 var columnValue = view.model.getValue(record, columnName); console.log("Column Value: " + columnValue); // 若CRITERIA_ID是数字类型,需转类型避免匹配失败 // var targetValues = $v("P13_SELECTED_VALUES").split(":").map(Number); if (targetValues.includes(columnValue)) { view.grid.selection.add(record); } });
额外检查点
- 确认
myIG_StaticID是Interactive Grid的正确静态ID,核对页面设计中的设置。 - 确认赋值
P13_SELECTED_VALUES的DA确实在这段JS代码之前执行,检查DA的触发顺序和执行条件。 - 如果
CRITERIA_ID是数字类型,需要将targetValues中的字符串转为数字(代码中已注释相关转换逻辑),避免类型不匹配导致includes判断失败。
内容的提问来源于stack exchange,提问作者Jason Bourne
相关产品推荐
相关产品推荐

