如何获取Oracle APEX交互式网格列列表?实现按条件隐显列
Oracle APEX 23.2 交互式网格遍历列实现条件隐藏/显示
在APEX 23.2.0中,有标准方式获取交互式网格的所有列列表——通过交互式网格模型的getColumns()方法,它会返回包含所有列元数据的数组,每个列对象的propertyName属性就是你需要的数据库列名。
基于这个方法,你可以修改代码实现自动遍历所有列,无需手动维护列名数组:
function Filter_columns() { // 获取交互式网格的grid视图实例 var grid = apex.region("report-form").widget().interactiveGrid("getViews", "grid"); // 获取所有列的元数据数组 var columns = grid.model.getColumns(); // 遍历每一列 columns.forEach(function(col) { var columnName = col.propertyName; // 获取总计行的列值,替换千分位逗号为小数点 var colTotal = grid.model.getRecordValue("t1000", columnName).replace(',', '.'); // 判断值是否为有效数字且非0,决定显示/隐藏列 if (parseFloat(colTotal)) { grid.view$.grid("showColumn", columnName); } else { grid.view$.grid("hideColumn", columnName); } }); }
注意事项:
- 代码中的
t1000是交互式网格总计行默认的record ID,如果你的总计行ID不是这个值,需要对应调整(可通过浏览器控制台打印grid.model.getRecords()查看总计行的ID)。 - 确保该函数在交互式网格加载完成后调用,比如放在页面
After Refresh动态动作中,或者网格的initialize事件回调里。
内容的提问来源于stack exchange,提问作者Vitaly
相关产品推荐
相关产品推荐

