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.
编辑 :我创建了这个 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.