2014-02-27 137 views
7

我需要按周(星期一,週二,週三,週四,週五,週六,週日)排序列,似乎無法得到這個工作。請注意,我正在使用最新的1.10版本的數據表。datatables 1.10和自定義排序功能

它與其他擴展一起位於其自己的文件中,並在jquery.dataTables.js加載後調用,但在表初始化之前調用。

/* custom sorting by weekday */ 
$.extend($.fn.dataTableExt.oSort, { 
    "weekday-pre": function (a) { 
     return $.inArray(a, ["SUN","MON","TUE","WED","THU","FRI","SAT"]); 
    }, 
    "weekday-asc": function (a, b) { 
     return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
    }, 
    "weekday-desc": function (a, b) { 
     return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
    } 
}); 

然後在我的表初始化中,我指定了這個特定列的排序。值可以/僅將來自數據庫的「SUN」,「MON」,「TUE」,「WED」,「THU」,「FRI」,「SAT」。

"columns": [ 
     ..... some column entries, 
    { 
     "data": "day", 
     "type": "weekday" 
    }, 
     ..... the rest of the column entries 

在控制檯中沒有錯誤,但是,排序就在我排序單擊列標題默認到正規的字母排序。

回答

5

得到這個與數據表工作1.10.0-beta.2:我剛定義aoColumns類型

$(function() { 
    $('#datatable').DataTable({ 
    "oLanguage": { 
     "sSearch": "Filter Data" 
    }, 
    "iDisplayLength": -1, 
    "sPaginationType": "full_numbers", 
    "aoColumns": [{ 
     "sType": "weekday" 
    },null] 
    }); 
}); 

注意。實際的排序仍然由您的代碼完成。

看看這Plunk並告訴我,如果這是你想要的。 (在Chrome上測試cuz FF對於數據表和Plunker有點挑剔)

+1

實際上,我的代碼沒有錯......我沒有意識到自定義排序在使用服務器端數據時永遠不會工作源大聲笑... – user756659

+0

@ user756659剛剛閱讀了評論後,掙扎了半個小時。如此明顯......感謝好友 – Eldamir

+0

哈哈。是的,現在我回頭看看它,我可以笑,因爲它很明顯,但是當你第一次開始使用DataTable時,它可以很容易地被你的思維過程打滑 - 當你開始看所有的選項時有很多事情要做及其運作。如果你正在使用pdo和serverside,你可能會對我修改的ssp類感興趣。給我發消息,我可以發送它。 – user756659