jQuery – datatable插件 – 排序问题
我正在使用http://datatables.net上的 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 eg, 11, 111, 1111
开头的所有数字, 1 eg, 11, 111, 1111
之前的1 eg, 11, 111, 1111
。
你有没有对插件有所了解?
- 知道解决这个排序问题吗?
- 或者知道在第一次启动时禁用排序的方法(显示数据,因为它来自db)?
任何建议非常感谢。
要解决此特定问题,您可以对数据表使用自然排序插件。 在http://datatables.net/plug-ins/sorting上阅读所有相关内容(搜索“自然排序”)。
简而言之,如果您已下载并嵌入了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”中的元素数量似乎必须等于表中的列数,否则您将收到错误。 空值表示datatables插件应该对该列使用默认排序方法。
你应该使用一个排序插件 ,如下所示:
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 ]