Oracle APEX交互式网格获取修改后单元格当前值问题
解决Interactive Grid获取修改后单元格值的问题
在Oracle APEX的Interactive Grid中,直接通过record.getValue()或索引获取字段值时,默认返回的是提交到服务器的原始值,不会包含客户端未保存的修改。要获取修改后的当前值,需要调整取值方式:
解决方案代码
// 获取Interactive Grid的grid视图与model var gridView = apex.region("PAYEMNTDetails").widget().interactiveGrid("getViews", "grid"); var model = gridView.model; // 获取选中的记录 var selectedRecords = model.getSelectedRecords(); if (selectedRecords && selectedRecords.length > 0) { var targetRecord = selectedRecords[0]; var targetField = "CURRENCYID"; // 替换为你的实际字段名 // 优先获取未提交的修改值,无修改则返回原始值 var updatedCurrencyId = model.getValue(targetRecord, targetField, {uncommitted: true}); // 可选:如果要捕获正在编辑中的实时值(比如单元格未失去焦点时) // var activeCell = gridView.getActiveCell(); // if (activeCell && activeCell.columnName === targetField && activeCell.recordId === targetRecord.id) { // updatedCurrencyId = gridView.getCellValue(activeCell); // } console.log("修改后的CurrencyId:", updatedCurrencyId); } else { console.log("未选中任何行。"); }
关键说明
- 核心调整:使用
model.getValue(record, fieldName, {uncommitted: true}),第三个参数uncommitted: true会让方法优先读取客户端未提交的修改值,没有修改时才返回原始值,这是适配所有编辑状态的通用方案。 - 实时编辑值捕获:如果你的动态动作是在单元格编辑过程中触发(比如按键事件),可以通过
gridView.getActiveCell()定位当前编辑单元格,再用gridView.getCellValue()获取实时输入值。
内容的提问来源于stack exchange,提问作者Ameer
相关产品推荐
相关产品推荐

