jQuery-datatable插件-排序问题
我正在使用来自的DataTables插件。jQuery-datatable插件-排序问题,jquery,datatables,Jquery,Datatables,我正在使用来自的DataTables插件。 插件本身非常有用,但我有一个很大的问题 它以以下格式返回某些搜索的地址列表 1 Main Street 12 Main Street 13 Main Street 14 Main Street ... 2 Main Street 3 Main Street 4 Main Street 5 Main Street .. 正如你所看到的,排序不是我所期望的。将返回所有以1开头的数字,例如2之前的11、111、1111 你们中有人对这个插件有什么不满吗
插件本身非常有用,但我有一个很大的问题 它以以下格式返回某些搜索的地址列表
1 Main Street
12 Main Street
13 Main Street
14 Main Street
...
2 Main Street
3 Main Street
4 Main Street
5 Main Street
..
正如你所看到的,排序不是我所期望的。将返回所有以1开头的数字,例如2
之前的11、111、1111
你们中有人对这个插件有什么不满吗
- 知道如何解决这个排序问题吗
- 或者知道如何在第一次启动时禁用排序(显示来自数据库的数据)
非常感谢您的建议。要解决这个问题,您可以使用datatables的自然排序插件。在(搜索“自然排序”)上阅读有关它的所有信息 简言之,提供并嵌入了
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;
};
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));
};
您还需要为列指定sSortDataType参数,告诉它要使用哪个插件函数(在下面的示例中,我将表的第三列的排序设置为natural):
这是工作小提琴
注意:事实上,似乎“aoColumns”上的元素数必须等于表中的列数,否则会出现错误。空值表示datatables插件应该为该列使用默认排序方法。您应该为该列使用一个类似以下内容的方法:
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;
};
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));
};
我是否必须将我拥有的每一列都指定为null?或者我可以只使用以下内容:
“aoColumns”:[{“sSortDataType”:“natural”}]
-因为我的自然排序只需要在第一列中进行?我认为您可以不必为第一列定义特殊排序,而跳过其余列的null
。我无法让它工作<代码>http://jsfiddle.net/MrTest/zhx32/4/-请看一看,告诉我我做错了什么?谢谢!看起来null
是必需的。