服务器端分页与jQuery数据表插件

时间:2015-06-18 07:20:26

标签: jquery spring-mvc datatables

如何使用数据表实现服务器端分页?目前,在加载页面时,我正在初始化数据表&通过Java Spring控制器从数据库填充Data(JSON)表。我通过在查询字符串中传递搜索条件来进行Ajax调用。由于我们有数十万条记录,因此我们计划对服务器端分页以提高性能。

为此,后端服务开发人员向我提供了一项服务,该服务为我提供了每页记录,但输入的内容如 PAGE NUMBER,NO OF PAGE RECORDS,SORT ORDER,SORT COLUMN

我必须覆盖数据表实现,以通过Ajax请求查询字符串将这些实现传递给服务。我不知道是否有办法实现这一目标。

2 个答案:

答案 0 :(得分:5)

  

如何使用数据表实现服务器端分页?

有关详细信息,请查看documentation

$(document).ready(function() {
    $('#example').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../server_side/scripts/server_processing.php"
    } );
} );

我建议你再看看docs

  

使用服务器端处理向服务器发出请求时,   DataTables将发送以下数据以便让服务器通过   知道需要什么数据   我不会复制所有参数,但这里只有少数参数:

start, length, order[i][column]

这些是我想的那些。

保持谨慎:

  

一旦DataTables使用上述参数发出数据请求   发送到服务器,它希望将JSON数据返回给它   设置以下参数:

并且您想亲自查看这些属性,以免过长这篇文章。

答案 1 :(得分:0)

准备使用代码:只需按要求使用

    $("#myTable1").DataTable({
        "oLanguage": {
            "sSearch": "Search Address:"
        },
        "iDisplayLength": 50,
        "processing": true, // for show progress bar
        "serverSide": true, // for process server side
        "filter": true, // this is for disable filter (search box)
        "orderMulti": false, // for disable multiple column at once
        "ajax": {
            "url": url,
            "type": "POST",
            "datatype": "json"
        },
        "columns": [
                { "data": "ProviderName", "name": "ProviderName", "autoWidth": true },
                { "data": "ProviderName", "name": "ProviderName", "autoWidth": true },
                { "data": "cpTitle", "name": "cpTitle", "autoWidth": true },
                { "data": "cpAddress", "name": "cpAddress", "autoWidth": true },
                { "data": "cpPriceHourly", "name": "cpPriceHourly", "autoWidth": true },
                { "data": "cpCreatedDate", "name": "cpCreatedDate", "autoWidth": true },
                { "data": "cpId", "name": "cpId", "autoWidth": true }
        ],

        "columnDefs": [{
            "targets": 0,
            "data": null,
            "render": function (data, type, full, meta) {
                cnt++;
                if (cnt != 0) {
                    $("#divExcel").show();
                }
                   return meta.settings._iDisplayStart + meta.row + 1;
                }
           }]

    });