【问题标题】:How to get all the data rows from DataTables.net when using pagination使用分页时如何从 DataTables.net 获取所有数据行
【发布时间】:2015-02-02 17:55:53
【问题描述】:

我知道我可以使用函数 fnGetData() 但这只能获取我所在页面的数据。我想获取所有数据,即使来自当前未显示的页面。我的目的是获取所有纬度和经度字段,以便我可以使用 Google Maps v3 将其显示在地图上。

我有这段代码,但同样,它只为我获取当前页面的数据。

var table = $('#example1 table').dataTable();
            var data = table.fnGetData();   
            console.log(data);

【问题讨论】:

  • 这不是它的记录方式。建议创建一个演示此行为的演示
  • 您的代码可以立即在 1.9.x 和 1.10.x 中运行。 fnGetData 不带参数返回一个数组,其中所有行都将每行的列值保存为子数组。

标签: javascript jquery datatables jquery-datatables datatables-1.10


【解决方案1】:

启用服务器端处理时 ('serverSide': true),实际上 1.9.x 函数 fnGetData() 和 1.10.x 函数 data() 都只返回当前页面的数据。

可以通过查看Server-side processing example 并在控制台中运行$('#example').dataTable().fnGetData()$('#example').DataTable().data() 来确认此行为。

为了检索所有数据,您需要发出一个单独的 AJAX 请求来模仿 DataTables 的行为。

由于您的问题被标记为datatables-1.10,我假设您使用的是 DataTables 1.10.x。可以使用ajax.params(),获取上次Ajax请求中DataTables提交给服务器的数据。

function processAllRecords(){
   var req = $('#example1 table').DataTable().ajax.params();

   // Reset request parameters to retrieve all records
   req.start = 0;
   req.length = -1;
   req.search.value = "";

   // Request data
   $.ajax({
      'url': 'script.php',
      'data': req,
      'dataType': 'json'
   })
   .done(function(json){
      // json.data is array of data source objects (array/object),
      // one for each row
      console.log(json);
   });
}

【讨论】:

    【解决方案2】:
    use the fnSettings().fnRecordsTotal() of the datatable. 
    example : http://www.datatables.net/forums/discussion/2401/record-count-with-server-side-processing
    

    我以前用过,我想我可以给你一个sn-p:

    var table = $('#table ').DataTable(
    {
                            "dom" : 'rtp', // Initiate drag column
                            "fnDraw" : false,
                            "serverSide": true,
                            "ajax" : ... ...
                                }
                            }),
                          "fnDrawCallback" : drawCallBack,
    });
    
    unction drawCallBack() {
        console.log(this.fnSettings().fnRecordsTotal());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      相关资源
      最近更新 更多