我在这里阅读了几篇文章以及 Telerik 网站上的教程,但缺少它们 - 并且文档已关闭。希望在阅读数小时后快速修复。
我正在尝试使用具有大量行(1M)的剑道网格。在网站上的示例中,我看到视图控制器操作正在返回整个数据集。获取所有行是非常昂贵的过程,并且数据集非常庞大。
我的问题是如何配置网格,以使每个后续回调都返回下一页并且初始调用不会一次获取所有行?
我的代码类似于:
//Main controller action
public ActionResult Index()
{
List<items> listItems = GetAllItems(); // very expensive call!
return View(listItems);
}
// my view for that action
@(Html.Kendo().Grid(Model)
.Name("grid")
.Columns(columns =>
{
//some columns...
})
.Pageable(page=>page.PageSizes(true)) //Enable paging - I suspect here I can fix
.DataSource(datasource =>datasource.Ajax().PageSize(20).Read(read => read.Action("MoreItems", "Index")).ServerOperation(true)) // tried all sorts of things here
.Sortable()
.Filterable()
)
// the callbacks for the ajax
public ActionResult MoreItems([DataSourceRequest] DataSourceRequest request)
{
return Json(GetAllItems().ToDataSourceResult(request));
}
//add some cache just to see what was holding the thing up
[OutputCache(Duration = 3600, VaryByParam = "none")]
private static List<items> GetAllItems()
{
//some code to retrieve items
}
(从示例看来,初始调用正在返回完整模型 - 并且对 Products_Read 的后续调用在过滤器对象上。如何过滤初始调用但允许将来分页 - 在我的情况下,我有 100k+ 行并且不可能做到“返回视图(模型”))谢谢!