我想要 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);
}
我的看法 函数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" }]
});
});
在剑道中你可以轻松做到这一点。您只需将 serverPaging: true 即可。但据我所知 true 是默认值。无论如何,需要在 dataSource 中声明它,如下所示。
dataSource: {
transport: {},
pageSize: 50,
serverPaging: true,
},
pageable: {
refresh: true,
pageSizes: [25, 50, 100]
}
如果每个新页面请求的 serverPaging 为 true,Kendo 将根据您的服务器获取逻辑向服务器发送请求以获取下一批。让我知道这是否有帮助。
另请参阅此 github 项目 KendoGridBinderEx,它也可以作为 NuGet 包提供。
可以在此处找到演示。
按照这篇文章进行操作,该文章通过正确的代码和解释解释了服务器端分页、排序和其他选项。
希望这有帮助。