APEX 22.1:点击交互式网格行设置页面项值失败求助
问题排查与解决方法
核心问题分析
你的代码返回undefined主要有两个原因:
$v("CURRENT_ROW_INDEX")未正确获取选中行的有效标识:IG的model.getValue()方法第一个参数需要的是行的唯一ID对象,而非视觉行索引;如果CURRENT_ROW_INDEX页面项未初始化或未同步更新,它的值为空,直接导致取值失败。- 未利用
Selection change事件自带的上下文:该事件触发时,动态动作本身已经能直接获取选中行数据,无需手动依赖额外页面项。
解决方法(推荐方案)
修改动态动作的Set Value逻辑,直接通过IG的API获取选中行数据:
- 打开目标动态动作,保持触发事件为
Selection change [Interactive grid],确保选择器指向IG的静态IDIG_GRID。 - 动作类型选择
Set Value,将类型改为JavaScript Expression,替换为以下代码:
var igGrid = apex.region("IG_GRID").widget().interactiveGrid("getViews", "grid"); var selectedRows = igGrid.model.getSelectedRecords(); // 仅当有选中行时返回OS_TIP值,否则清空页面项 return selectedRows.length > 0 ? igGrid.model.getValue(selectedRows[0], "OS_TIP") : "";
- 在
Set Value的目标项中选择P660_LOV_OS_TIP,保存后测试即可。
额外排查步骤
如果修改后仍不生效,检查以下几点:
- 确认IG的静态ID确实是
IG_GRID:APEX静态ID区分大小写,核对页面设计器中IG的属性设置。 - 确认
OS_TIP列名正确:IG的model.getValue()使用的是列的数据库列名(基于SQL的IG)或列的静态ID(手动定义列),避免拼写错误。 - 控制台验证API有效性:打开浏览器开发者工具控制台,执行
apex.region("IG_GRID").widget().interactiveGrid("getViews", "grid").model.getSelectedRecords(),确认能返回选中行对象数组,排除IG加载或初始化问题。
内容的提问来源于stack exchange,提问作者Syd
相关产品推荐
相关产品推荐

