为啥 displayStart (Datatable 1.10) 对我不起作用?

Posted

技术标签:

【中文标题】为啥 displayStart (Datatable 1.10) 对我不起作用?【英文标题】:Why is displayStart (Datatable 1.10) not working for me?为什么 displayStart (Datatable 1.10) 对我不起作用? 【发布时间】:2021-09-25 19:30:27 【问题描述】:

我使用的是 Datable (1.10.3),无论我在 diplayStart 字段中设置什么值,服务器请求的 start 参数始终为 0。 这是我的代码:

    this.table = $('#table').DataTable(
      displayStart: 100,
      order: [[0, 'desc']],
      processing: true,
      serverSide: true,
      searching: true,
      pageLength: 50,
      searchDelay: 1000,
      language: 
        lengthMenu: 'Show _MENU_ records per page'
      ,
      dom: '<"top"il>rt<"bottom"p><"clear">',
      ajax: 
        url: <url>,
        type: 'POST',
        headers: 
          authorization: <token>
        ,
        data: function (d) 
          //setting request data
        ,
        dataSrc:  (json) =>
          return json.data;
        ,
        error: function (xhr, error, thrown) 
          if (xhr.status + '' === '401') 
            location.href = '/';
          
        
      ,
      columns: this.getColumns(),
      
      drawCallback: function () 
        //some operations
      
    );

如果我像旧版本一样初始化表格,它似乎可以正常工作,如下所示: this.table = $('#table').dataTable(... 但是这种初始化会破坏代码中其他预先存在的函数调用(如searchrow)。

谁能建议我哪里出错了,我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我不确定 displayStart 是否适用于服务器端。 我意识到这不是一个理想的解决方案,如果你找不到任何其他可以覆盖管道方法,强制它使用你想要的任何东西:

$.fn.dataTable.pipeline = function ( opts ) 
    return function ( request, drawCallback, settings ) 
            request.start = 20;     
            return $.ajax( 
                "type":     opts.method,
                "url":      opts.url,
                "data":     request,
                "dataType": "json",
                "success":  drawCallback
             );
    
;

以https://datatables.net/examples/server_side/pipeline.html为例

【讨论】:

我遇到了基于此解决方案的问题。设置起始值可以让我获得所需的页面值。但在这种情况下,页码从 1 开始,无法获得之前的结果。你能提出更好的建议吗?

以上是关于为啥 displayStart (Datatable 1.10) 对我不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

c# datarow[] 转换成 datatable

更新后如何连续刷新datagridview

fread showProgress作为消息

DataGrid 的自动填充功能

渲染数据表布尔列

Newtonsoft.Json.Linq对象读取DataSet数据