jQuery数据表服务器端分页

时间:2018-09-04 11:44:50

标签: jquery api datatables

嗨,我们使用jquery数据表, 到目前为止,我们已经可以进行api调用并加载数据了。 我的服务器端代码-

   string headers = "\"total\": \"" + totalPages + "\", \"columnNames\": \"" + columnNames + "\", \"page\": \"" + page + "\", \"records\": \"" + totalrows + "\"";


                        responsetoken.content = functions.Serialize(ldData).Insert(1, headers + ", ");

和我的客户端代码-

   $.ajax({
                url: 'staticreport',
                data: JSON.stringify({
                     startDate: that.startDate, endDate: that.endDate
                }),
                cache: false,
                datatype: "json",
                type: "PUT",
                success: function (data) {
                    if (data.StaticReportList != null) {

                      var columns = [];
                        var colName = data.columnNames.split(',');
                        console.log(colName);
                        for (var i in colName) {
                            columns.push({ data: colName[i], title: colName[i] });
                        }
                        console.log(columns);
                        console.log(columns.data);
                        $('#grid').DataTable({
                            data: data.StaticReportList,
                            columns: columns
                        });
                    }
                    that.mainView.ajaxDecrement();
                }
            });

我想将分页放入datatable中,该数据表将在每次单击后调用api并获取下一个记录集,而此时我仅带来100条记录以及总记录数来创建分页。

这就是我的物体的样子 enter image description here

我如何在数据表中应用服务器端分页?

2 个答案:

答案 0 :(得分:0)

ajax页面应该是构成数据的页面。如果您监视请求和响应,例如,如果用户单击页面“ 3”,则get URL或post参数将包含&iDisplaystart和&iDisplaylength

如果一次显示50条记录,&iDisplaylength将为50。

如果用户单击“ 3”,则&iDisplaystart将为100 (第0页从0开始,第1页从50开始,第2页从100开始,第3页...)

您的ajax页面必须能够读取请求变量,并且必须包含从记录100(从请求变量读取)开始发送回50条记录(从请求变量读取)的逻辑。 URL中还包括列排序顺序和过滤器值(如果使用的话)。

您的json响应的开始应类似于

{ "iTotalRecords":  # of total records in your data set ,
"iTotalDisplayRecords":  # of total records that match the filter or search value,
"data": [
... your jSON data starting at record 100, and running for 50 records
]
}

答案 1 :(得分:0)

以下是数据表服务器端处理https://datatables.net/manual/server-side的文档。我认为您应该根据下拉列表和页面调度来确定记录的大小。您可以将length(用于数据库限制)和start(用于偏移量)参数发送到服务器。

数据表总是将其参数发送到您的服务器,您可以通过浏览器开发工具中的network标签或文档来检查它。要为查询添加其他参数,可以将方法data添加到a​​jax请求中,如下所示,该方法接受Datatables的原始参数。

          $("#table").DataTable({
                processing: true,
                serverSide: true,
                ajax: {
                    url: 'staticreport',
                    data: function (d) {
                        d.startDate = $("#startDate").val();
                        d.endDate = $("#endDate").val();
                    }
                }
           });

希望这会有所帮助。