Jquery DataTables 如何恢复初期排序

【问题】

·使用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,已经怎么查询到有效的信息,是没有任何问题的,

·所有,如果你有任何问题请直接联系,定会相助。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值