我有一个数据表显示2人之间的数字连接。其中一些没有任何连接,因此可能有一个字符串“x”作为某些单元格的值。
我得到的问题是排序。如果按列排序,数字只按第一个数字排序,而不是按点前面的部分排序。
我将点设置为十进制分隔符,如下所示:
var lang = {
"decimal": ".",
"emptyTable": "No data available in table",
"info": "Showing _START_ to _END_ of _TOTAL_ entries",
"infoEmpty": "Showing 0 to 0 of 0 entries",
"infoFiltered": "(filtered from _MAX_ total entries)",
"infoPostFix": "",
"thousands": "",
"lengthMenu": "Show _MENU_ entries",
"loadingRecords": "Loading...",
"processing": "Processing...",
"search": "Search:",
"zeroRecords": "No matching records found",
"paginate": {
"first": "First",
"last": "Last",
"next": "Next",
"previous": "Previous"
},
"aria": {
"sortAscending": ": activate to sort column ascending",
"sortDescending": ": activate to sort column descending"
}
};
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withDOM('frtip')
.withOption('language', lang)
.withButtons([
{
extend: 'csv',
text: 'Download as CSV'
},
{
extend: 'excel',
text: 'Download as XLS'
}
]);
以下是从控制台输出中获取的数据的摘录:
再次是一个截图,用于解释错误的排序:
此处表格按列leonard排序,您可以看到这是按第一个数字排序的。但它应该是:94.36,66.39,9.96,7.31,......
任何想法我可能会出错?
答案 0 :(得分:0)
内置类型检测效果很好。但是,如果任何与假定类型冲突,则该列将变为默认的alpha排序。您可以拥有一行完美的有效日期,但如果最后一行包含空值或x
,则最终会进行字母排序。您可以通过在num
部分中强制columnDefs
数据类型来解决此问题:
$scope.dtColumnDefs = [
{ targets: 0, type: 'num' } //0 is the column index
];
不知道你的标记,但它会像
<table datatable="" dt-options="dtOptions" dt-column-defs="dtColumnDefs">
现在数字应该正确排序