我有一个按等级排序的数据表,可以通过输入框输入。
等级是1到9的单个数字,或者可以是空白。我希望每当我排序时,空格总是出现在列表的末尾。
请参阅JSFiddle示例:http://jsfiddle.net/afEHc/
如果我使用:
"aoColumns": [ { "sSortDataType": "dom-text" }, null ]
它可以获取新值,但顺序不正确。这就是空白需要始终出现在最后。
如果我使用:
"aoColumns": [{"sType": "data-rank"}, null ]
它最初工作正常,但是当我先按另一列排序或将值添加到排名列时,它会中断。
任何意见或建议都将不胜感激。
答案 0 :(得分:1)
是的,不幸的是,你不能拥有$.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.