You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Interactive Grid动态动作中获取开关列的修改后值?

解决Interactive Grid开关列修改后获取最新值的问题

这个问题我碰到过好多次啦——你现在拿到旧值的核心原因是,代码里从IG的model读取数据时,model还没同步用户刚做的修改,或者触发时机没选对。给你两个简单靠谱的解决办法:

方法一:直接从触发的开关元素获取最新值

IG里的Yes/No开关本质是复选框组件,最新状态可以直接从触发元素上读取,不用绕到model里,这是最直接可靠的方式:

// 直接判断开关的选中状态,转换为Y/N
var val = $(this.triggeringElement).prop("checked") ? "Y" : "N";
alert(val);

解释:当用户切换开关时,触发元素的checked属性会立刻更新,直接判断这个属性就能拿到最新的Y/N值。

方法二:从IG Model中获取已更新的值

如果你一定要从model里取值,需要确保model已经同步了用户的修改,或者通过model的变更记录获取新值:

var $te = $(this.triggeringElement); 
var rowId = $te.closest('tr').data('id'); 
var ig$ = apex.region("GMIG").widget(); 
var gridView = ig$.interactiveGrid("getViews", "grid");
var model = gridView.model;

// 方式A:获取当前行字段的最新值
var val = model.getFieldValue(model.getRecord(rowId), "USER_EXIST");
alert(val);

// 方式B:从model的变更记录中提取修改后的新值
var rowChanges = model.getChanges()[rowId];
if (rowChanges && rowChanges["USER_EXIST"]) {
    var val = rowChanges["USER_EXIST"].value;
    alert(val);
}

额外注意点

  • 一定要检查动态动作的触发事件:建议选择Change事件,触发时机设置为When the element changes,避免在model还没更新的时机(比如Before Refresh)执行代码。
  • 如果你的IG开启了批量编辑或者延迟同步,方法一的直接取值会比方法二更稳定。

内容的提问来源于stack exchange,提问作者sunny.3334u

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 11:47:49