我在 C# MVC 中使用 datatables.net。我正在做服务器端加载并尝试进行分页,但我不明白如何将skiprecords、totalrecords等参数从Javascript/Ajax传递到我的控制器。
现在我没有传递任何参数,数据表加载正常,但我想进行服务器端分页。我可以处理控制器端代码,这不是问题。问题是传递参数,以便我的控制器知道它位于第 4 页,并且仅显示这些记录。
下面在他们的网站上给出的示例正在运行,但他们没有传递任何参数,并且服务器端分页以某种方式正在运行。不知道怎么办。
https://datatables.net/examples/data_sources/server_side
这是我的JS代码:
dataTable = $("#tblDetails").DataTable(
{
"sAjaxSource": "/MyController/MyMethod",
"bServerSide": true,
"bProcessing": true,
"bSearchable": true,
"order": [[1, 'asc']],
"columns": [
{
"data": "Col1",
"autoWidth": true,
"searchable": true
},
{
"data": "Col2",
"autoWidth": true,
"searchable": true
},
]
}
);
分页需要传递哪些参数?
从服务器端处理文档,它将提供
start
和 length
作为 API 的查询字符串参数。
在 API 中,您可以通过 LINQ 查询获取参数并使用
Skip()
和 Limit()
执行分页。
public JsonResult MyMethod(int draw = 1, int start = 0, int length = 10)
{
int recordsTotal = /* Dataset instance */.Count();
var filteredData = /* Dataset instance */
.Skip(start)
.Limit(length)
.ToList();
draw++;
return Json(new
{
draw = draw,
recordsFiltered = filteredData.Count(),
recordsTotal = recordsTotal,
data = filteredData
});
}