微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我现在正在为一个工作中的应用程序进行一个错误修复,在那里,以前的开发人员(自从走了以后)并没有打扰在专门列出数据结果的页面分页数据结果。

当然这也是因为用户在IE中看到长时间运行的脚本错误而令人难堪。这与数据量大小相结合,使网页几乎没有用。

尽快解决这个问题,而且他们已经很好了。该网站是使用DataTables开发的.NET MVC 2站点,以在客户端上添加搜索/排序/分页功能。我刚刚完成了一个类似的任务,使用jqgrid,所以这将是比较直接的。除了一个小问题,我不能为我的生活获得页面链接生成

快速查看结果:

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

但是不会生成页面链接

我的动作方法是通过返回JSON

return Json(new
              {
                 param.sEcho,iTotalRecords = totalRecords,iTotaldisplayRecords = filteredContracts.Count(),aaData = result
              },JsonRequestBehavior.AllowGet);

哪里

param.sEcho =“1”,
iTotalRecords = 2086,
iTotaldisplayRecords = 25,
而aaData是要显示的数据的数组结果

要彻底,他是datatable初始化语句:

$("#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部分实现服务器端页面,你会看到有三个数字:

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

如果将all.Count代替,则将.Count放入iTotaldisplayRecords DataTables中将显示分页。 iTotaldisplayRecords和iTotalRecords用于显示消息
显示1到25的iTotaldisplayRecords(总共iTotalRecords)”

如果iTotaldisplayRecords等于25,DataTables将显示消息“显示1到25的25(总共iTotalRecords)”,并假设没有第2页;因此,寻呼将被禁用,如您的示例。

约万

原文地址:https://www.jb51.cc/jquery/182228.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐