jQuery - 数据表插件 - 排序问题
问题描述:
我使用的是来自http://datatables.net的DataTables插件。
它自己的插件是非常有用的,但我有一个很大的问题。jQuery - 数据表插件 - 排序问题
它以下列格式返回某些搜索的地址列表。
1 Main Street
12 Main Street
13 Main Street
14 Main Street
...
2 Main Street
3 Main Street
4 Main Street
5 Main Street
..
正如你所看到的排序不是我所期待的。将在2
之前返回以1 eg, 11, 111, 1111
开头的所有号码。
有没有人对这个插件有一些看法?
- 知道解决这个排序问题吗?
- 或知道如何在第一次启动时禁用排序(显示来自form db的数据)?
任何建议非常感谢。
答
要解决这个特定的问题,你可以使用自然排序插件的数据表。在http://datatables.net/plug-ins/sorting(搜索“自然排序”)中阅读全部内容。
总之,只要you've downloaded和嵌入式naturalSort
功能,即可定义排序办理数据表是这样的:
jQuery.fn.dataTableExt.oSort['natural-asc'] = function(a,b) {
return naturalSort(a,b);
};
jQuery.fn.dataTableExt.oSort['natural-desc'] = function(a,b) {
return naturalSort(a,b) * -1;
};
您还需要指定sSortDataType参数为列,告诉它该插件函数的使用(例如下面我设置的排序,以自然为我的表的第三列):
$('#example').dataTable({
"aoColumns": [
null,
null,
{ "sType": "natural" }
]
});
这里的工作小提琴http://jsfiddle.net/zhx32/14/
注意:看起来你实际上“aoColumns”上的元素数量必须等于表中的列数,否则你会得到一个错误。空值表示数据表插件应该使用该列的默认排序方法。
答
您应该使用sorting plugin对于这样的事情:
jQuery.fn.dataTableExt.oSort['num-html-asc'] = function(a,b) {
var x = a.replace(/<.*?>/g, "");
var y = b.replace(/<.*?>/g, "");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['num-html-desc'] = function(a,b) {
var x = a.replace(/<.*?>/g, "");
var y = b.replace(/<.*?>/g, "");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};
,然后指定aoColumns
"aoColumns": [
null,
null,
null,
{ "sType": "num-html" },
null
]
我必须指定每一列,我有作为空该类型 - 或我可以使用这个:'“aoColumns”:[{“sSortDataType”:“natural”}]' - 因为我的自然排序将只在第一列中需要? – Iladarsda
我认为你可以逃避只为你的第一列定义特殊排序,并为其余列忽略'null'。 – WTK
我无法让它工作。 'http:// jsfiddle.net/MrTest/zhx32/4 /' - 请你看一下,看看我做错了什么? – Iladarsda