APEX 22.2 Interactive Grid:Average聚合Overall Average值如何保留两位小数?
解决APEX Interactive Grid总平均值保留两位小数的方法
方法1:通过JavaScript格式化聚合行
在页面的Function and Global Variable Declaration中添加以下代码:
function formatIGOverallAverage() { // 替换为你的Interactive Grid静态ID(如ig1) const ig = apex.region("ig1").widget().interactiveGrid("getViews", "grid"); const overallRow = ig.element.find(".a-ig-overall-row"); if (overallRow.length > 0) { // 替换为目标列的单元格索引(从0开始) const avgCell = overallRow.find("td").eq(2); const originalValue = parseFloat(avgCell.text()); if (!isNaN(originalValue)) { avgCell.text(originalValue.toFixed(2)); } } }
接着创建动态动作确保格式生效:
- 触发事件:选择
Page Load和Interactive Grid: Refresh - 执行动作:
Execute JavaScript Code - 代码内容:
formatIGOverallAverage();
方法2:设置列的数字格式化掩码
- 打开页面设计器,找到目标IG的对应列
- 在列的Attributes标签页,找到Format Mask属性
- 输入适配的数字掩码,例如
999G999G999G999D99(D代表小数点,9为数字位,G为千分位分隔符,可根据数值范围调整) - 保存后运行页面,总平均值会自动应用该格式
方法3:自定义聚合函数(进阶)
如果需要从计算环节就限制小数位数,可注册自定义聚合类型:
apex.interactiveGrid.addAggregateType( "AVG_TWO_DECIMALS", { label: "Average (2 Decimals)", isApplicable: function(column) { return column.dataType === "NUMBER"; }, compute: function(column, rows, model) { let sum = 0, count = 0; rows.forEach(function(row) { const val = model.getValue(row, column.property); if (val != null && !isNaN(val)) { sum += val; count++; } }); return count > 0 ? parseFloat((sum / count).toFixed(2)) : null; }, getFormatOptions: function() { return { format: "999G999G999G999D99" }; } } );
保存后,在IG的聚合设置中选择新的Average (2 Decimals)类型,即可直接得到两位小数的总平均值
内容的提问来源于stack exchange,提问作者JeffK
相关产品推荐
相关产品推荐

