gpt4 book ai didi

JQuery DataTables .Net 服务器端分页问题

转载 作者:行者123 更新时间:2023-12-03 21:51:10 26 4
gpt4 key购买 nike

我现在正在为工作中的应用程序修复错误,该应用程序的前任开发人员(现已离开)没有费心在专门用于列出数据结果的页面上对数据结果进行分页。

随着用户开始在 IE 中看到长时间运行的脚本错误,这当然已经引起了人们的注意。再加上庞大的数据量,使得网页几乎毫无用处。

快进到我尝试修复它的过程,结果进展顺利。该站点是一个使用 DataTables 开发的 .NET MVC 2 站点,用于在客户端上添加搜索/排序/分页功能。我刚刚使用 jqGrid 完成了类似的任务,所以认为这会相对简单。这只是一个小问题。我一生都无法获得要生成的页面链接。

快速结果 View :

结果知道这个查询有2086条记录:

enter image description here

但是不会生成分页链接。

enter image description here

我的操作方法通过返回 JSON

return 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 通过服务器端数据检索正确生成分页?

最佳答案

您的 iTotalDisplayRecords 等于 25,因此数据表认为服务器端只有 25 个合约,不需要第二页,因为所有合约都已显示在当前页面上。这是常见的错误 - 如果您查看 JQuery MVC tutorial在服务器端分页的实现部分你会看到有三个数字:

  1. iTotalRecords = allCompanies.Count() 表示数据库中的所有条目(在您的情况下为 2086)
  2. iTotalDisplayRecords = FilteredCompanies.Count() 表示符合当前搜索条件的记录数。如果您没有使用过滤,此数字应与 iTotalRecords 2086 相同,但在您的情况下,它是 25。
  3. result.Count - 这是 25。这个数字不会在 JSON 响应中传递,因为 DataTables 已经知道每页应该有 25 条记录。

如果将 all.Count 而不是 result.Count 放入 iTotalDisplayRecords 数据表中,将显示分页。 iTotalDisplayRecords 和 iTotalRecords 用于显示消息“显示 1 到 25 条 iTotalDisplayRecords(总共 iTotalRecords)”

如果iTotalDisplayRecords等于25,DataTables将显示消息“Showing 1 to 25 of 25 (iTotalRecords in total)”,并假设没有第2页;因此,分页将被禁用,如您的示例所示。

乔万

关于JQuery DataTables .Net 服务器端分页问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com