jquery dataTable 重置排序

The*_*mca 5 sorting datatable jquery

我正在尝试做一个任务,就像这个问题一样

  • 我有一个有效的 jquery 数据表
  • 我想要一个功能来重置排序,这是在用户选择任何列之前,与从 HTML 读入相同。

它让我找到了一个不错的插件。

http://datatables.net/plug-ins/api/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 );
};
Run Code Online (Sandbox Code Playgroud)

但是我不知道“如何使它工作”。任何人都知道什么是“oApi”,或者在我使用这个插件之前我需要更多的设置吗?

因为我的脚本Uncaught TypeError: Cannot read property 'oApi' of undefined 在我复制脚本后立即出现,并且该错误使函数未定义。我该怎么办 ?

小智 5

对于 DataTable 1.10+可以使用order.neutral()插件

插件代码

$.fn.dataTable.Api.register( 'order.neutral()', function () {
    return this.iterator( 'table', function ( s ) {
        s.aaSorting.length = 0;
        s.aiDisplay.sort( function (a,b) {
            return a-b;
        } );
        s.aiDisplayMaster.sort( function (a,b) {
            return a-b;
        } );
    } );
} );
Run Code Online (Sandbox Code Playgroud)

CDN: cdn.datatables.net/plug-ins/1.10.19/api/order.neutral().js

例子

// Return table to the loaded data order
  table.order.neutral().draw();
Run Code Online (Sandbox Code Playgroud)


elz*_*lzi 4

您提供的链接中有一个使用示例。

var table = $('#example').dataTable();

// Sort in the order that was originally in the HTML
table.fnSortNeutral();
Run Code Online (Sandbox Code Playgroud)

编辑尝试在初始化时给它一个“order”属性:JSBin

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 );
};

$(document).ready(function() {
    var oTable = $('#example').dataTable({
        "order" : [[ 1, "desc" ]]
    });

    setTimeout(function() {
        oTable.fnSortNeutral()
    }, 1000)

});
Run Code Online (Sandbox Code Playgroud)