Oracle APEX IG获取所有记录EMPL_STAT1列select list返回值方法
问题背景
我的Interactive Grid包含名为EMPL_STAT1的列。
目前使用如下代码获取选中记录中该列select list的返回值,代码可正常运行:
var reg = apex.region('ig_emp').widget(); var grid = reg.interactiveGrid("getViews","grid"); var model = reg.interactiveGrid("getViews","grid").model; var selectedRecords = grid.getSelectedRecords(); for (i = 0; i < selectedRecords.length; i++) { record = model.getRecord(selectedRecords[i][0]); itemcodeField = model.getFieldKey("EMPL_STAT1"); alert(record[itemcodeField].v); }
现需要调整代码逻辑,获取EMPL_STAT1列下**所有记录(而非仅选中记录)**对应的select list返回值。
修改方案
核心修改逻辑是去掉选中记录的获取逻辑,直接遍历Interactive Grid对应model存储的所有记录即可,优化后代码如下:
var reg = apex.region('ig_emp').widget(); var grid = reg.interactiveGrid("getViews","grid"); var model = grid.model; // 字段key提前在循环外获取,减少重复计算 var itemcodeField = model.getFieldKey("EMPL_STAT1"); var allRecordValues = []; // 遍历model中所有记录,第二个参数传true表示包含未提交的新增、修改记录 model.forEachRecord(function(record) { // 如需过滤已标记删除的记录可保留下方判断,不需要可删除 if (model.isDeleted(record)) { return; } var fieldValue = record[itemcodeField].v; allRecordValues.push(fieldValue); // 原逻辑的alert可按需保留 // alert(fieldValue); }, true); // 最终allRecordValues数组存储了所有记录对应EMPL_STAT1列的select list返回值 console.log(allRecordValues);
注意事项
- 如果Interactive Grid开启了分页,上述代码仅能获取当前已加载到前端的记录。如果需要获取跨分页的全量数据,需要将IG的分页模式调整为无分页,或者开启滚动加载加载全部数据,未加载到前端的分页数据无法通过前端JS直接读取。
forEachRecord方法的第二个参数传入true时,会包含用户在页面上新增但未提交的记录,传入false则仅读取初始加载的已保存记录,可根据实际需求调整。
内容的提问来源于stack exchange,提问作者Zygmunt
相关产品推荐
相关产品推荐

