2016-09-15 25 views
1

我有一個DataTable,其中我的第一列是VIN號碼。按數據表中的部分數字排序

實施例:FLXVU3822G1000013

現在VIN數字只是一串臨時固定信息。最後6個數字是該年的序列號。你可以看到這輛車是今年的第13個。我真的想讓我的列表過濾掉最後6位數字。有沒有辦法做到這一點?

回答

2

您可以通過自定義排序插件輕鬆解決此問題。其實你只需要提取的最後6位數字,並返回它們作爲一個數字,然後數據表將使用內部號碼排序算法排序的列:

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
"last-6-digits-pre": function (a) { 
    var n = a.substring(a.length - 6, a.length) 
    return parseInt(n) 
} 
}) 

用法:

var table = $('#example').DataTable({ 
    columnDefs : [ 
    { targets: 0, type: 'last-6-digits' } 
    ] 
}) 

其中targets: 0是要按這種特定方式排序的列的索引。

觀看演示 ​​- >http://jsfiddle.net/zhmcLkb9/

+0

一直在努力實現這一點,我似乎無法得到它的工作,所以我有幾個問題。你爲什麼要在最後6位數字前面? jQuery.extend函數在哪裏引用DataTablie init?在document.ready內部,在其他地方...... – JonD

+0

@JonD,已經更新了演示。嘗試將'columnDefs'的內容註釋掉。 'pre-'用於「準備」(據我記得),每行都會調用它,並且在對錶進行排序時將使用返回的值。你也可以用'-asc'和'-desc'來覆蓋排序算法。據我所知,編寫插件的文檔並不多(據我所知),但您可以在這裏學習其他插件 - > ** https://datatables.net/plug-ins/sorting/** – davidkonrad