Javascript 导出backgrid.js';将网格数据转换为csv

Javascript 导出backgrid.js';将网格数据转换为csv,javascript,backgrid,Javascript,Backgrid,有人能告诉我当点击按钮时如何将Backgrid.js表数据导出为csv吗。 我已经使用backgrid.js显示了一个表。现在我想将数据导出为csv文件。您可以使用下划线.js尝试以下操作: // columnsParam -> columns parameter you passed when created backgrid // collection -> collection you passed when created backgrid var columns = _.

有人能告诉我当点击按钮时如何将Backgrid.js表数据导出为csv吗。
我已经使用backgrid.js显示了一个表。现在我想将数据导出为csv文件。

您可以使用下划线.js尝试以下操作:

// columnsParam -> columns parameter you passed when created backgrid
// collection -> collection you passed when created backgrid

var columns = _.indexBy(columnsParam, 'name'),
    labels = _.pluck(columnsParam, 'label'),
    keys = _.pluck(columnsParam, 'name');

var csv = labels.join(',') + '\n';

csv += collection.map(function(item) {

    return _.map(keys, function(key) {
        var cell = columns [key].cell,
            // suppose you want to preserve custom formatters
            formatter = cell.prototype && cell.prototype.formatter;

        return formatter && formatter.fromRaw ?
            formatter.fromRaw(item.get(key), item) : item.get(key);
    }).join(',');

}).join('\n');
它并不完美(不处理通常的格式化程序),但它展示了这个想法

更新

要将csv作为文件下载,可以将处理程序绑定到按钮:

var encodedUri = encodeURI('data:text/csv;charset=utf-8,' + csv),
var link = document.createElement('a');
link.setAttribute('href', encodedUri);
link.setAttribute('download', 'data.csv');

link.click();