【问题标题】:server side pagination doesn't seem to be working c# asp.net jquery datatables服务器端分页似乎不起作用 c# asp.net jquery datatables
【发布时间】:2014-08-21 15:39:07
【问题描述】:

我试图让分页工作,但它不工作。我在数据库中有超过 90k 条记录,但它只显示 50 条记录,如下面的屏幕截图所示:

我根据this tutorial 和这个resolved query 返回以下 JSON:

return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = tracks.Count(),
            iTotalDisplayRecords = filteredTracks.Count(),
            aaData = results
        },
            JsonRequestBehavior.AllowGet);
    }

这是分页控制器代码:

var displayedTracks = filteredTracks.Skip(param.iDisplayStart).Take(param.iDisplayLength);

这是我的 View 数据表代码:

var oTable = $('#myDataTable').hide(50).fadeIn(10).dataTable({
        "oLanguage": {
            "sSearch": " "
        },
        "bAutoWidth": false,
        "sAjaxSource": "Ajax_DB",
        "deferRender": false,
        "bServerSide": true,
        "bProcessing": true,
        "sScrollY": "333",
        "iDisplayLength": 50,
        "bPaginate": true,
        "bRetrieve": true,
        "bDestroy": true,
        "sPaginationType": "full_numbers",
        "aoColumns": [
    { "mDataProp_": "TrackID", "sWidth": "1%" },
    { "mDataProp_": "AddedDate", "bSortable": false, "sWidth": "1%" },
    { "mDataProp_": "TrackName", "sWidth": "43%" },
    { "mDataProp_": "ArtistName", "sWidth": "30%" },
    { "mDataProp_": "ArtistName", "sWidth": "30%" }
        ]
    });

我不知道我在这里做错了什么,分页似乎不起作用。有人可以帮助我如何实现这一目标吗?提前致谢。

【问题讨论】:

    标签: c# pagination jquery-datatables


    【解决方案1】:

    它的伴侣很简单

    只需将您的 iDisplayLength 属性值更改为您所需的计数,即 100 或其他任何值

    "iDisplayLength": 100 
    

    请参阅datatables.net 了解对您有帮助的文档

    希望对你有帮助

    您确定您的代码如下所示:

     filteredLeads = filteredLeads.OrderByDescending(orderingFunction);
    
     var DisplayedLeads = filteredLeads.Skip(param.iDisplayStart).Take(param.iDisplayLength);
    
                var result = from c in DisplayedLeads select new string[] { // my columns  };
                return Json(new
                {
                    sEcho = param.sEcho,
                    iTotalRecords = leadDetails.Count(),
                    iTotalDisplayRecords = filteredLeads.Count(),
                    aaData = result
                },
                            JsonRequestBehavior.AllowGet);
            }
    

    让你知道调试时出现在 itotalrecords、iTotalDisplayRecords、aaData 上的测试结果是什么。

    【讨论】:

    • 谢谢,我几乎什么都试过了。您在iDisplayLength 上输入的计数无关紧要。 iDisplayLength 显示每页要显示的记录数。这里的问题是它没有显示Pagination。我在服务器端有 90,000 条记录,所以我不能在 iDisplayLength 中放入 90,000 条记录,因此需要 pagination 每页显示 50 / 100 条记录。再次感谢:)
    • 好吧,我反其道而行之。让我进一步了解。检查编辑
    • 很酷,您只是想提供帮助 :) 我尝试了您的建议,但它仍然给了我之前的结果。我已经更新了我的完整控制器代码以供您详细检查。一切都在其中工作,即搜索,日期,除了分页之外的排序。再次感谢:)
    • 从外观上看,我没有发现特别的问题。根据您的示例图像显示其类似 1-50 。你确定 iTotalRecords = tracks.Count() 不是 50 吗?数据表太敏感,很难找出确切的根本原因,直到亲自调试它。 .hide(50).fadeIn(10) 你确定这不会有效果吗?我从来没有用过。干杯
    • 如果您保留idisplaylength:100,请告诉我您得到的结果是 1-100 还是只有 1-50? Datatable.js 版本? iTotalRecords = 90000 ,iTotalDisplayRecords = 50你喜欢这个调试,让我知道。
    猜你喜欢
    • 2015-10-31
    • 2012-07-18
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2018-03-13
    • 2017-06-04
    相关资源
    最近更新 更多