30

谁能告诉我如何使用客户端 Kendo UI Grid 实现服务器端分页?

4

3 回答 3

63

更新:我们发布了一个开源 .NET 库,它使分页、排序和过滤变得更加容易。

一旦您设置为,网格将发送电流pageSize和。在服务器端,您应该使用提供的信息对数据进行分页,并将其与项目总数一起返回。这是一个代码片段:skipserverPagingtrue

行动

public ActionResult Products(int pageSize, int skip) 
{
     using (var northwind = new NorthwindDataContext())
     {
        var products = northwind.Products;
        // Get the total number of records - needed for paging
        var total = products.Count();

        // Page the data
        var data = products.Skip(skip).Take(pageSize).ToList();

        // Return as JSON - the Kendo Grid will use the response
        return Json(new { total = total, data = data });
     }
}

看法

$("#grid").kendoGrid({
    dataSource: {
        transport: {
            read: {
               url: "home/products",
               dataType: "json",
               type: "POST"
            }
        },
        schema: {
            data: "data", // records are returned in the "data" field of the response
            total: "total" // total number of records is in the "total" field of the response
        },
        serverPaging: true // enable server paging
    }
});

参考

使用 LINQ 进行分页

数据源配置设置

于 2012-10-17T07:29:56.527 回答
3

接受的答案没有 UI 解决方案;只提供一个 jQuery 答案。如果它对其他人有帮助,这里是适用于我们在 UI 中的剑道网格的解决方案:

控制器的代码片段

        DataSourceResult result = new DataSourceResult()
        {
            Data = dataSet,
            Total = recordCount
        };

        return Json(result, JsonRequestBehavior.AllowGet);

查看代码片段

        .DataSource(dataSource => dataSource                
            .Ajax()
            .Read(read => read.Action("*<our method>*", "*<our controller>*")
        )
于 2019-01-24T16:48:07.927 回答
0

要实现服务器分页,应该从服务器返回正确的格式。对于服务器端分页 JSON 格式将类似于以下 JSON:-

{ "mytotal":1069, "mydata": [{ ProductID : 1, ProductName : "Chai"}, { ProductID : 2, ProductName : "Chang" }]}

告诉剑道网格从 mytotal 对象中选择记录总数,并从模式中的 mydata 中选择数据行

schema: {
    data: "mydata"
    total: "mytotal" // total is returned in the "total" field of the response
  }

在此处查看详细示例

于 2017-04-26T16:19:00.600 回答