我有大量的数字数据。
这需要以逗号分隔值的形式呈现。
对于Ex。
使用Ag-Grid将123456.78
渲染为123,457
。
请帮助我实现这一目标。
答案 0 :(得分:11)
根据单元格渲染流程文档(here),您可以使用colDef.valueFormatter,如下所示:
var columnDefs = [
{headerName: "Number", field: "number"},
{headerName: "Formatted", field: "number", valueFormatter: currencyFormatter}
];
function currencyFormatter(params) {
return '£' + formatNumber(params.value);
}
function formatNumber(number) {
// this puts commas into the number eg 1000 goes to 1,000,
// i pulled this from stack overflow, i have no idea how it works
return Math.floor(number).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
}
你也可以像其他帖子描述的那样使用cellRenderer,但这通常用于更复杂的渲染,而valueFormatter专门针对这种情况。来自ag-grid documentation:
valueFormatter用于文本格式。 cellRenderer用于何时包含HTML标记和 细胞的潜在功能。例如,如果你愿意的话 将标点符号放入值中,如果要放置,请使用valueFormatter 按钮或HTML链接使用cellRenderer。可以使用a 两者的组合,在这种情况下是valueFormatter的结果 将传递给cellRenderer。
答案 1 :(得分:5)
var output = input.split("<").join("#").split(">").join("</span>").split("#").join("<span>");
console.log(output);
就像我们在Angular2 Typescript代码中可以提到的那样。
答案 2 :(得分:2)
您可以通过编写“customcellRenderer”来执行此操作,当您创建列定义时为“cellRenderer”属性提供函数并在渲染器中使用数字过滤器,类似这样的
var colDef = {
name: 'Col Name',
field' 'Col Field',
cellRenderer: function(params) {
var eCell = document.createElement('span');
var number;
if (!param.value || !isFinite(param.value)) {
number = '';
} else {
number = $filter('number')(param.value, 0);
}
eCell.innerHTML = number;
return eCell;
}
}