我正在为工作中的应用程序进行错误修复工作,其中先前的开发人员(自那以后)不打算在专门用于列出数据结果的页面上对数据结果进行分页。
当然,当用户开始在IE中看到长时间运行的脚本错误时,这当然已经让人头疼了。这与纯粹的数据量大小相结合,使得网页几乎无用。
快速尝试修复它并且它们已经很好了。该站点是一个.NET MVC 2站点,它是使用DataTables在客户端上添加搜索/排序/分页功能而开发的。我刚刚使用jqGrid完成了一个类似的任务,所以认为这将是相对简单的。除了一个小问题外,它一直存在。我不能为我的生活获取生成的页面链接。
快速结果视图:
结果知道此查询中有2086条记录:
但不会生成分页链接。
我的操作方法是通过
返回JSONreturn Json(new
{
param.sEcho,
iTotalRecords = totalRecords,
iTotalDisplayRecords = filteredContracts.Count(),
aaData = result
},
JsonRequestBehavior.AllowGet);
其中
param.sEcho =“1”, iTotalRecords = 2086, iTotalDisplayRecords = 25, 和aaData是要显示的数据的数组结果
要彻底,他是数据表初始化语句:
$("#tblToDoItems").dataTable({
'bServerSide': true,
'bProcessing': true,
'sAjaxSource': '/Home/GetContractList',
"bJQueryUI": true,
"bAutoWidth": false,
"bPaginate": true,
"sPaginationType": "full_numbers",
"iDisplayLength": 25,
/* make the first and last columns not sortable */
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [0, -1] }
]
});
我是否遗漏了一些阻止DataTables通过服务器端数据检索正确生成分页的设置?
答案 0 :(得分:29)
您的iTotalDisplayRecords等于25,因此数据表认为服务器端只有25个合同而不需要第二个页面,因为所有这些合同都已显示在当前页面上。 这是一个错误 - 如果您查看JQuery MVC tutorial部分服务器端分页的实现,您将看到有三个数字:
如果您将all.Count而不是result.Count放入iTotalDisplayRecords DataTables将显示分页。 iTotalDisplayRecords和iTotalRecords用于显示消息 “显示1到25个iTotalDisplayRecords(总计iTotalRecords)”
如果iTotalDisplayRecords等于25,DataTables将显示消息“显示1到25的25(总计iTotalRecords)”,并假设没有第2页;因此,将禁用分页,如您的示例所示。
约万