呈现数据表列以忽略字母并按编号

时间:2018-04-26 17:23:09

标签: jquery datatables

我无法使用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

我做错了什么?

3 个答案:

答案 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;
&#13;
&#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。如果您使用服务器端,情况可能会有所不同......