【问题标题】:Why does Datatables paging using AjaxSource and MVC only return one page?为什么使用 AjaxSource 和 MVC 的 Datatables 分页只返回一页?
【发布时间】:2011-07-21 23:51:21
【问题描述】:

尝试使用指向我的控制器中的 Action 的 AjaxSource 来分页 JQuery DataTables 控件。尽管 ajax 调用和数据表本身工作,但我无法让数据表分页控件显示超过一页。使用 DataTables 1.8.1.、JQuery 1.4.1、MVC2

为了演示这个问题,我创建了一个字符串数组列表,

var data = new List<string[]>() {
                new string[] {"1", "a1", "a2", "a3"},
                new string[] {"2", "b1", "b2", "b3"},
                new string[] {"3", "c1", "c2", "c3"},
                ...
                ...
                new string[] {"39", "c1", "c2", "c3"},
                new string[] {"40", "a1", "a2", "a3"}                  
        };

我分页列表并从我的控制器返回它

 var pagedData = data.Skip(param.iDisplayStart*param.iDisplayLength)
                     .Take(param.iDisplayLength);

        return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = data.Count,
            iTotalDisplayRecords = pagedData.Count(),
            aaData = pagedData
        },
        JsonRequestBehavior.AllowGet);

我的数据表是通过

    $(document).ready(function ()
    {

        $('#myDataTable').dataTable({
            "bServerSide": true,
            "sAjaxSource": "../ApplicationLog/AjaxHandler",
            "bProcessing": true,
            "sPaginationType": "full_numbers",
            "aoColumns": [
                    { "sName": "COLONE" },
                    { "sName": "COLTWO" },
                    { "sName": "COLTHREE" },
                    { "sName": "COLFOUR" }
                ]
        });
    });

此 Ajax 调用调用 Action 并将前 10 行发布到我的表中,该表报告它“显示 10 个条目中的 1 到 10 个(从 40 个总条目中过滤)”。

我遇到的问题是数据表上的寻呼机,它只显示按钮

'第一个','上一个','1','下一个','最后一个'

即使我有四页数据要显示。如果我单击“第一个”、“上一个”、“下一个”或“最后一个”中的任何一个,则不会调用我的操作。

我是否遗漏了一些明显的东西?任何帮助将不胜感激。

提前致谢, 本

【问题讨论】:

  • 澄清一下,当您单击“第一个、上一个等”时,甚至没有调用“AjaxHandler”操作?换句话说,您可能已经在该操作方法上设置了一个断点,对吧?我也很好奇调用动作时“param”中的值是什么。

标签: jquery asp.net-mvc ajax paging datatables


【解决方案1】:

我过去曾遇到过这个问题。尝试设置

iTotalDisplayRecords = data.Count()

我认为它使用 iTotalDisplayRecords 来检查诸如“过滤后的记录中是否还有更多可查看的内容”

在这种情况下,您告诉数据表“我的搜索返回了 10 条记录,总共有 40 条,但我只想在过滤结果中显示 10 条”

因此,由于 datatables 认为只有 10 个过滤行要显示,而您在该页面上显示这 10 个,它认为不需要进行任何分页。

【讨论】:

  • 不敢相信我错过了这个。谢谢。
  • Tnx,这也帮助了我 o/ :)
猜你喜欢
  • 2022-08-24
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 2019-07-28
相关资源
最近更新 更多