嗨,我们使用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条记录以及总记录数来创建分页。
我如何在数据表中应用服务器端分页?
答案 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
添加到ajax请求中,如下所示,该方法接受Datatables的原始参数。
$("#table").DataTable({
processing: true,
serverSide: true,
ajax: {
url: 'staticreport',
data: function (d) {
d.startDate = $("#startDate").val();
d.endDate = $("#endDate").val();
}
}
});
希望这会有所帮助。