Ag-Grid:数字格式,例如:123456.78到123,457

时间:2016-04-07 09:49:50

标签: ag-grid

我有大量的数字数据。 这需要以逗号分隔值的形式呈现。 对于Ex。 使用Ag-Grid将123456.78渲染为123,457。 请帮助我实现这一目标。

3 个答案:

答案 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;
    }
}