修改角度网格组件格式导出的列

时间:2016-02-05 09:42:20

标签: javascript angularjs ag-grid

我在代码中使用了ag-grid组件,并希望确保在导出为CSV时根据客户需要格式化日期列。目前使用js Date对象的默认格式。代码可以在这里找到:

https://github.com/ceolter/ag-grid/blob/master/src/ts/csvCreator.ts

我可以直接对代码进行以下更改,但这显然是不好的做法。我对JavaScript很新,并且想知道是否有一种标准方法来扩展/覆盖像这样的库中的功能。

建议的更改(注意这显示我对js版本所做的更改而不是使用ts的github版本):

--- Common/scripts/agGrid/ag-grid.js    (revision b0e7d54e61e6371b0cab94428cb4329f9f62db11)
+++ Common/scripts/agGrid/ag-grid.js    (revision )
@@ -1848,7 +1848,11 @@
+                var exportDateAs = function(dt){if (dt instanceof Date)
+                    return dt.getFullYear() + "/" + (dt.getMonth()+1) + "/" + dt.getDate();
+                };

@@ -1883,6 +1887,9 @@
+                            if (valueForCell instanceof Date){
+                                valueForCell = exportDateAs(valueForCell);
+                            }

2 个答案:

答案 0 :(得分:1)

看起来此功能是在较新版本中添加的: https://www.ag-grid.com/javascript-grid-export/

答案 1 :(得分:0)

我的解决方案是手动更新ag网格组件中的功能,如下所示。它似乎有效,但不确定它是否是最佳做法。有谁愿意评论?

用我自己的对象替换对象中的函数:

ag.grid.CsvCreator.prototype.getDataAsCsv = agCustom.getDataAsCsv;

新功能

var agCustom;
(function (agCustom) {

    // This is a modified version of the getDataAsCsv from
    // agGrid to allow date formatting in csv export
    agCustom.getDataAsCsv = function (params) {
        var LINE_SEPARATOR = '\r\n';
...
        var exportDateAs = function(dt){if (dt instanceof Date)
            return dt.getFullYear() + "/" + (dt.getMonth()+1) + "/" + dt.getDate();
...
                else {
                    valueForCell = _this.valueService.getValue(column.colDef, node.data, node);
                    if (valueForCell instanceof Date){
                        valueForCell = exportDateAs(valueForCell);
                    }
...
})(agCustom || (agCustom = {}));