自定义数据表排序

Custom datatable sort

本文关键字:排序 数据表 自定义      更新时间:2023-09-26

>我有一个按等级排序的数据表,可以通过输入框输入。

排名是 1 到 9 的一位数,也可能为空。我希望每次排序时,空白始终出现在列表的末尾。

请参阅 JSFiddle 示例:http://jsfiddle.net/afEHc/

如果我使用:

"aoColumns": [ { "sSortDataType": "dom-text" }, null ]

它可以拾取新值,但顺序不正确。这就是空白需要始终出现在末尾。

如果我使用:

"aoColumns": [{"sType": "data-rank"}, null ]

它最初工作正常,但当我先按另一列排序或向排名列添加值时,它会中断。

任何观点或建议将不胜感激。

是的,不幸的是你不能有$.fn.dataTableExt.afnSortData['data-rank'],至少据我所知。

但是您可以像尝试的那样使用dom-text,并将sType设置为data-rank

"aoColumns": [
   { "sSortDataType": "dom-text", "sType": "data-rank" },
    null
]

新的自定义排序功能:

jQuery.extend( jQuery.fn.dataTableExt.oSort, { 
    "data-rank-asc": function ( a, b ) {
        a = (a==='') ? 99 : a; b = (b==='') ? 99 : b;    
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "data-rank-desc": function ( a, b ) {
        a = (a==='') ? -1 : a; b = (b==='') ? -1 : b;    
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

现在它起作用了!空格始终显示在末尾,包括升序和降序,以及当您在输入字段中输入新值时也是如此。

分叉小提琴:http://jsfiddle.net/s29aB/

为了澄清自定义排序:我只是简单地将空白/" - 值设置为升序排序时的 -1,降序排序时为 99。