1

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

排名是 1 到 9 的单个数字,也可以是空白。每当我排序时,我希望空白始终出现在列表的末尾。

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

如果我使用:

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

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

如果我使用:

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

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

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

4

1 回答 1

1

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

但是您可以dom-text按照您的尝试使用,并将其设置sTypedata-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 降序排序。

于 2013-09-20T12:44:08.000 回答