【问题】
·使用JQuery Datatables插件默认的排序设置,
但是表头点击后的排序模式为
升序 → 降序 → 升序 → 降序→... 如此循环
需求是:
升序 → 降序 → 默认 → 升序 → 降序→ 默认 → ... 如此循环
【解决核心】
·查看了官网设置后,发现并没有相关的属性设置或者API调用,在论坛搜索后,终于找到了解决方案
网站维护者提供了一个插件,用于将Datatable恢复到初期时的html布局,也就是清空sort
“Change ordering of the table to its data load order”
插件地址: fnSortNeutral
代码如下:
jQuery.fn.dataTableExt.oApi.fnSortNeutral = function ( oSettings )
{
/* Remove any current sorting */
oSettings.aaSorting = [];
/* Sort display arrays so we get them in numerical order */
oSettings.aiDisplay.sort( function (x,y) {
return x-y;
} );
oSettings.aiDisplayMaster.sort( function (x,y) {
return x-y;
} );
/* Redraw */
oSettings.oApi._fnReDraw( oSettings );
};
·由于版本问题,这个插件可能使用不了,这时候需要你去修改它,让它为你所用。
如果上面的插件无法使用,我用register重新包装了下,代码如下:
$.fn.dataTable.Api.register( 'fnSortNeutral()', function () {
/* Remove any current sorting */
oSettings.aaSorting = [];
/* Sort display arrays so we get them in numerical order */
oSettings.aiDisplay.sort( function (x,y) {
return x-y;
} );
oSettings.aiDisplayMaster.sort( function (x,y) {
return x-y;
} );
/* Redraw */
oSettings.oApi._fnReDraw( oSettings );
} );
你也可以让它恢复成其他sort
sortArr是设置的排序,参数类型见:sort
$.fn.dataTable.Api.register( 'fnSortNeutral()', function (sortArr) {
/* Remove any current sorting */
oSettings.aaSorting = sortArr;
/* Sort display arrays so we get them in numerical order */
oSettings.aiDisplay.sort( function (x,y) {
return x-y;
} );
oSettings.aiDisplayMaster.sort( function (x,y) {
return x-y;
} );
/* Redraw */
oSettings.oApi._fnReDraw( oSettings );
} );
【最后】
·也许你想知道怎么让DataTable中出现checkBox或者图片,或者其他布局
·其实就是渲染TD,让它呈现需求的样式,基本columnDefs中的2个API搞定
·createdCell: 渲染用
·render: 数据处理用,排序啊显示啊之类的
【PS】
·已经在项目使用Datatables有一年多了,深受其益,也颇受其害。
虽然很多API也没用过,但基本的option和API,已经怎么查询到有效的信息,是没有任何问题的,
·所有,如果你有任何问题请直接联系,定会相助。