javascript - 将 backgrid.js 的网格数据导出为 csv

标签 javascript backgrid

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

最佳答案

您可以使用 underscore.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 下载为文件,您可以将处理程序绑定(bind)到按钮:

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();

关于javascript - 将 backgrid.js 的网格数据导出为 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31506690/

相关文章:

javascript - 从双重选择器中排除一个类的麻烦

javascript - 无法在 Javascript 中连接 String+Variable+String

javascript - jQuery 文本操作计数器

javascript - 如何将回调函数传递给已编译的 Jade 模板,而无需在 javascript 中全局声明它

Javascript 将字符串拆分为数组字典(键 -> 值)(正则表达式)

javascript - 使用 JQuery 检查元素是否有边框?

javascript - 避免单击两次以开始编辑 Backgrid 中的 bool (复选框)单元格

javascript - 如何突出显示不可编辑的背景网格单元格?

backgrid - 在 backgrid 中显示嵌套属性

javascript - 背网整合