簡體   English   中英

如何編寫jQuery Datatables的自定義排序?

[英]How can I write a custom sort for jQuery Datatables?

我正在使用jQuery插件Datables: http ://www.datatables.net/

我的示例在這里: http : //live.datatables.net/wanebotu/1/edit

我的示例表中有幾列,其中之一是“名稱”。 我添加了一些相同的名稱,但一個以大寫字母開頭,另一個都以小寫字母開頭。 例如:Ashton Cox,ashton cox。 但是,我確實相信數據表中使用的默認排序不區分大小寫,這意味着排序是“穩定的”(如果我錯了,請糾正我)。

我的問題是,當我對它進行排序時,該列變得不一致。 如果升序,則大寫字母將首先出現,即第一行是Ashton Cox,然后是ashton cox。 如果是降序,則最后一行是ashton cox,然后倒數第二行是Ashton Cox。

因此,如果它是相同的單詞但大寫,那么我該如何編寫一個自定義排序,使最后一行的首行大寫降序。

E.g. for ascending:
Ashton Cox
ashton cox,
Colleen Hurst
colleen Hurst

E.g. for descending: 
colleen hurst,
Colleen Hurst,
ashton cox
Ashton Cox

很抱歉,這一切聽起來令人費解。 這是一個令人困惑的問題,要求令人困惑。

使用以下代碼進行了此操作:

$.extend( $.fn.dataTableExt.oSort, {
    "casetext-pre": function ( a ) {
      return a[0].toLowerCase()+a;
    },
    "casetext-asc": function ( a, b ) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "casetext-desc": function ( a, b ) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
} );

$(document).ready( function () {
  var table = $('#example').DataTable({
        "aoColumns": [{
      "sType": "casetext"
    },null,null,null,null,null]
  });
} );

這將定義一個新的排序函數/類型,該函數/類型會將數據的第一個字符轉換為小寫,然后附加原始字符串數據。

請注意,必須在aoColums設置數據類型。 (在此示例中,我只關心具有特定類型的名稱)。 null的數量應與您的列匹配。

這沒有經過非常徹底的測試,但是應該給您提示如何進行。

這是您修改的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM