jQuery Datatable自定义分页在排序时重置

时间:2018-08-02 06:15:58

标签: c# asp.net-mvc datatable datatables

我们有一个使用JQuery数据表的.net MVC应用程序。为数据表实现服务器端加载。数据表被初始化为

$("#myTable").DataTable({
    "searching": true,
    "pageLength": 1,
    "processing": true, // for show progress bar
    "serverSide": true, // for process server side
    "filter": false, // this is for disable filter (search box)
    "orderMulti": false, // for disable multiple column at once
    "ajax": {
        "url": "Users/GetUsers",
        "type": "POST",
        "datatype": "json"
    },
    "columns": [
        { "data": "FirstName", "name": "FirstName"},
        { "data": "LastName", "name": "LastName" } 
    ]
});

控制器的操作是

[HttpPost]
public ActionResult GetUsers()
{
    var draw = Request.Form.GetValues("draw").FirstOrDefault();
    var start = Request.Form.GetValues("start").FirstOrDefault();
    var length = Request.Form.GetValues("length").FirstOrDefault();
    var searchstring = Request.Form.GetValues("search[value]").FirstOrDefault();

    //Find Order Column
    var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
    var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();

    int pageSize = length != null ? Convert.ToInt32(length) : 0;
    int skip = start != null ? Convert.ToInt32(start) : 0;
    int recordsTotal = 0;

    List<User> users = new List<User>();
    // Logic to fetch users
    recordsTotal = users.Count();
    var data = users.Skip(skip).Take(pageSize).ToList();
    return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data }, JsonRequestBehavior.AllowGet);

}

在这种情况下,分页工作正常,但是当我们对列进行排序(通过单击数据表标题行)时,分页会重置为1。

例如,如果用户位于第3页上,然后单击标题列进行排序,则项目将进行排序,但页数设置回1,但是应仅为3。

能否请您指导我们如何避免在排序时更改页码?

谢谢!

0 个答案:

没有答案