如何从datatables.net传递分页参数

问题描述 投票:0回答:1

我在 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
            },
        ]
    }
);

分页需要传递哪些参数?

javascript c# asp.net-mvc datatables pagination
1个回答
2
投票

服务器端处理文档,它将提供

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 
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.