Kendo Grid中的服务器端分页?

时间:2014-01-27 11:59:17

标签: asp.net-mvc kendo-grid client-side paging

我想在Kendo Grid中进行客户端网格分页。在网格中,只有前50或100个数据将显示在第一页中。当客户点击下一页时,将显示其他50或100个数据。我不想从我的服务器获取所有数据。因为数据库中将有数百万个数据,客户不想等待服务从服务器获取所有数据。当他/她点击下一页时,其他数据应该从服务器请求。我该怎么办?

我的控制器

[HttpGet]
    public JsonResult Getdata()
    {
        var reports = db.ActivityLog.OrderBy(c => c.dateTime).ToList();
        var collection = reports.Select(x => new
        {
            username = x.uName,
            location = x.locName,
                devices = x.devName
        });
        return Json(collection, JsonRequestBehavior.AllowGet);
    }

我的观点     function handleDataFromServer(){

        $("#grid").data("kendoGrid").dataSource.read();
    }

    window.setInterval("handleDataFromServer()", 10000);

    $(document).ready(function () {
        $("#grid").kendoGrid({
            sortable: true,
            pageable: {
                input: true,
                numeric: false
            },
            selectable: "multiple",
            dataSource: {
                transport: {
                    read: "/Home/Getdata",
                    type: "json"
                }
            },
            columns: [
                            { field: "username", width: "80px" },
                            { field: "location", width: "80px" },
                            { field: "devices", width: "80px" }]
        });
    });

3 个答案:

答案 0 :(得分:0)

在剑道你可以轻松地做到这一点。您只需要转换serverPaging:true。但据我所知,真实是违约。无论如何,需要在dataSource中声明它如下。

dataSource: {
    transport: {},
    pageSize: 50,
    serverPaging: true,        
},
pageable: {
    refresh: true,
    pageSizes: [25, 50, 100]
}

如果serverPaging对于每个新页面请求都为true,则Kendo将根据您的服务器提取逻辑向Server发送请求以获取下一批次。如果这有帮助,请告诉我。

答案 1 :(得分:0)

按照本文解释服务器端分页,排序和其他选项以及正确的代码和解释。

http://blog.longle.net/2012/04/13/teleriks-html5-kendo-ui-grid-with-server-side-paging-sorting-filtering-with-mvc3-ef4-dynamic-linq/

希望这会有所帮助。

答案 2 :(得分:0)

另请参阅此github项目KendoGridBinderEx,该项目也可作为NuGet包使用。

可以找到演示here