如何在AG Grid中按行设置格式(百分比/千分位分隔符)
按行实现AG Grid数据格式化方案
核心思路是利用valueFormatter结合行数据的标识字段,动态选择对应的格式化规则,无需转置行列。
1. 定义带标识的行数据
给每行添加一个用于区分类型的字段(比如示例中的col1),明确该行是数值行还是百分比行:
const rowData = [ { col1: 'value', col2: 2345.6, col3: 3677.7 }, { col1: 'percentage', col2: 0.138, col3: 0.096 } ];
2. 配置列定义并实现动态格式化
在columnDefs中,针对需要格式化的列,编写valueFormatter函数,根据当前行的标识字段选择对应格式:
// 复用格式化逻辑,避免重复代码 const formatCellValue = (value, isPercentage) => { if (isPercentage) { // 百分比格式,保留1位小数 return new Intl.NumberFormat('en-US', { style: 'percent', minimumFractionDigits: 1, maximumFractionDigits: 1 }).format(value); } else { // 千分位数值格式,保留1位小数 return new Intl.NumberFormat('en-US', { minimumFractionDigits: 1, maximumFractionDigits: 1 }).format(value); } }; const columnDefs = [ { field: 'col1', headerName: 'col1' }, { field: 'col2', headerName: 'col2', valueFormatter: params => formatCellValue(params.value, params.data.col1 === 'percentage') }, { field: 'col3', headerName: 'col3', valueFormatter: params => formatCellValue(params.value, params.data.col1 === 'percentage') } ];
说明
- 使用原生
Intl.NumberFormat处理格式化,比自定义正则更可靠,还能灵活切换地区格式(比如把en-US换成zh-CN适配中文千分位)。 - 若你的行标识字段不是
col1,替换为实际字段名即可(比如单独定义type: 'value'或type: 'percentage')。
内容的提问来源于stack exchange,提问作者mHelpMe
相关产品推荐
相关产品推荐

