我想在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" }]
});
});
答案 0 :(得分:0)
在剑道你可以轻松地做到这一点。您只需要转换serverPaging:true。但据我所知,真实是违约。无论如何,需要在dataSource中声明它如下。
dataSource: {
transport: {},
pageSize: 50,
serverPaging: true,
},
pageable: {
refresh: true,
pageSizes: [25, 50, 100]
}
如果serverPaging对于每个新页面请求都为true,则Kendo将根据您的服务器提取逻辑向Server发送请求以获取下一批次。如果这有帮助,请告诉我。
答案 1 :(得分:0)
按照本文解释服务器端分页,排序和其他选项以及正确的代码和解释。
希望这会有所帮助。
答案 2 :(得分:0)
另请参阅此github项目KendoGridBinderEx,该项目也可作为NuGet包使用。
可以找到演示here。