尝试使用指向控制器中操作的 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 调用调用操作并将前 10 行发布到我的表中,该表报告“显示 10 个条目中的 1 到 10 个(从总共 40 个条目中筛选出)”。
我遇到的问题是数据表上的寻呼机,它只显示按钮
“第一个”、“上一个”、“1”、“下一个”、“最后一个”
尽管我有四页数据要显示。如果我单击“第一个”、“上一个”、“下一个”或“最后一个”中的任何一个,我的操作不会被调用。
我错过了一些明显的东西吗?任何帮助将不胜感激。
提前致谢, 本
我过去也遇到过这个问题。尝试设置
iTotalDisplayRecords = data.Count()
我认为它使用 iTotalDisplayRecords 来检查诸如“过滤后的记录中是否还有更多可分页”之类的内容
在这种情况下,您告诉数据表“我的搜索返回了 10 条记录,总共 40 条,但我只想显示过滤结果中的 10 条”
因此,由于 datatables 认为只有 10 个过滤行要显示,而您正在该页面上显示这 10 个行,因此它认为不需要进行任何分页。