Oracle APEX 23.2:如何检查交互式网格数据是否完全加载?
在Oracle APEX 23.2中主动检查交互式网格数据是否完全加载
在APEX 23.2里,你可以通过以下几种方式主动检查交互式网格(IG)的数据是否已完全加载:
借助交互式网格JavaScript API直接判断
先获取网格实例,再结合数据记录和加载状态类来验证:// 获取目标交互式网格的实例 const igInstance = apex.region("STATIC_ID").widget().interactiveGrid("getViews", "grid"); // 组合判断数据是否加载完成 const isDataLoaded = igInstance.model.getRecords().length > 0 && !igInstance.view$.hasClass("apex-loading");逻辑说明:
igInstance.model.getRecords()返回网格中的数据记录数组,长度大于0表示已有数据igInstance.view$.hasClass("apex-loading")检查网格是否处于加载状态,无该类则加载完成
提前监听加载事件并标记状态
若需要在多处检查,可先通过事件监听记录加载状态,后续直接读取该状态变量:let isIgDataLoaded = false; const targetIgRegion = apex.region("STATIC_ID"); // 监听网格数据加载完成事件 targetIgRegion.widget().interactiveGrid("getViews", "grid").model.subscribe({ event: "fetchComplete", callback: function() { isIgDataLoaded = true; } }); // 主动检查的方法 function checkIgLoadedStatus() { return isIgDataLoaded && targetIgRegion.widget().interactiveGrid("getViews", "grid").model.getRecords().length > 0; }注意:
fetchComplete事件会在每次数据加载(包括分页、刷新)完成后触发,能准确同步加载状态检查数据模型的加载属性
直接通过模型的isLoading属性判断:const igModel = apex.region("STATIC_ID").widget().interactiveGrid("getViews", "grid").model; const isLoaded = !igModel.isLoading() && igModel.getRecords().length > 0;
内容的提问来源于stack exchange,提问作者smriti
相关产品推荐
相关产品推荐

