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

Special characters in DataTable column names in JQuery/Javascript

编辑 :我创建了这个 fiddle 这说明了问题。

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

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

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

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

欢迎任何帮助。

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

DataTables can automatically combine data from an array source, joining the data with the characters provided between the two brackets. For example: name[, ] would provide a comma-space separated list from the source array. If no characters are provided between the brackets, the original array source is returned.

因此您的 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.