【问题标题】:jquery dataTable reset sortingjquery dataTable 重置排序
【发布时间】:2014-11-19 04:14:02
【问题描述】:

我正在尝试做一个任务,就像这个question一样。

  • 我有一个工作的 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 );
};

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

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

【问题讨论】:

    标签: jquery sorting datatable


    【解决方案1】:

    对于DataTable1.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;
            } );
        } );
    } );

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

    示例

    // Return table to the loaded data order
      table.order.neutral().draw();

    【讨论】:

      【解决方案2】:

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

      var table = $('#example').dataTable();
      
      // Sort in the order that was originally in the HTML
      table.fnSortNeutral();
      

      编辑尝试在初始化时给它一个“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)
      
      });
      

      【讨论】:

      • 是的,我试过这个。但是在table.fnSortNeutral();这一行运行之前,插件脚本本身就有错误Uncaught TypeError: Cannot read property 'oApi' of undefined,所以无法运行。
      • 感谢您的贡献。对我来说最好使用aaSorting:[]属性,我放了一个按钮来运行重置排序功能。这是其他喜欢参考的编辑用法:JSBin
      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2013-08-08
      • 2019-06-30
      • 2017-07-13
      • 1970-01-01
      相关资源
      最近更新 更多