JQuery / Javascript中DataTable列名中的特殊字符

时间:2018-01-22 07:26:21

标签: javascript datatables datatables-1.10

编辑:我创建了这个fiddle 这显示了这个问题。

我按照以下方式定义我的列(伪代码,请不要告诉我声明变量)

var cols = [];
cols.push({
    data:theNameWithSpecialCharacters,
    title:theNameWithSpecialCharacters,
    render: $.fn.dataTable.render.number(",",".",3)
});

myDataTable = $('#theDataTable').DataTable({
    columns: cols,
    data: someDataInCorrectFormat
}).draw();

数据表已正确呈现,但它没有显示列名称中存在一些特殊字符(我的情况为[])的列的值。

欢迎任何欢迎。

1 个答案:

答案 0 :(得分:1)

如果您使用data选项作为字符串,括号将被解释为数组表示法。数据表documentation表示以下内容:

  

DataTables可以自动组合数组源中的数据,将数据与两个括号之间提供的字符连接起来。例如:name [,]将提供与源数组分隔的逗号空间列表。如果括号之间没有提供字符,则返回原始数组源。

所以你的data: "[bla]"正在寻找一个未命名的数组(它不存在,因此是空列)来显示其元素之间的bla。不幸的是,似乎没有办法逃避字符串中的括号。 最简单的解决方法是使用data作为函数并从对象中获取值。

cols.push({
    data: function(row) {
      return row["[bla]"];
    },
    title:"[bla]",
    render: $.fn.dataTable.render.number(",",".",3)
});

这是您更新的fiddle

修改 如果您不知道注释中提到的OP之类的列名,则数据函数可以与列的索引一起使用。

cols.push({
data: function(row, type, set, meta) {
  return row[theColumns[meta.col].theColumnName];
},
title: theColumns[i].theColumnName,
render: $.fn.dataTable.render.number(",",".",3)
});

另一个fiddle