我无法使用jQuery
Datatables
对数据进行排序。
我有一个包含许多列的表。我想要排序的列是Document Number
。有些文件编号在开头有A,有些没有。我试图按降序排序这些,而不考虑那封信A
。
目前数据如下:
A83052
A83030
A83019
A08565
A08554
A08542
A08455
08500
08365
08345
00098
但我希望它排序如下:
A83052
A83030
A83019
A08565
A08554
A08542
08500
A08455
08365
08345
00098
但是,我必须将A留在那里,因为它是Document number
的一部分。
这是我的代码:
j$("table[id$=policyBlock]").DataTable({
"order": [[0, 'desc']],
"bFilter": false,
"bPaginate": false,
"bInfo": false
});
我尝试做的是在" bInfo"之后添加以下内容。字段:
"columnDefs": [ {
"targets": 0,
"render": function( data, type, row ) {
return type=="sort" ? data.replace(/\D/g,'') : data;
}
}]
然后列表自行排序:
00098
08365
08500
A83019
A08565
A83030
A08554
A83052
A08455
08345
A08542
我做错了什么?
答案 0 :(得分:1)
您可以为表格单元格设置moment('2015-02-27T16:30:00Z').workingDiff(moment('2015-02-26T12:00:00Z'), 'hours');
// 12
moment('2015-02-27T16:30:00Z').workingDiff(moment('2015-02-26T12:00:00Z'), 'hours', true);
// 12.5
属性,data-order
将按此属性排序。您的表格单元格应如下所示:
Datatable
了解详情:https://datatables.net/examples/advanced_init/html5-data-attributes.html
<td data-order="08542">A08542</td>
&#13;
$('#dataTable').DataTable({
"order": [[0, "desc"]],
"bFilter": false,
"bPaginate": false,
"bInfo": false
});
&#13;
答案 1 :(得分:0)
实现这一目标的一种方法是添加一个隐藏的列,其中字母A
被删除。
这在columns.orderData
option的文档中作为示例提及。
答案 2 :(得分:0)
这样的事情应该有效:
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"justNum-pre": a => parseFloat(a.replace(/\D/g, "")),
"justNum-asc": (a, b) => a - b,
"justNum-desc": (a, b) => b - a
});
const table = $('#example').DataTable({
columnDefs: [{
type: 'justNum',
targets: 0
}]
});
工作示例here。如果您使用服务器端,情况可能会有所不同......