ここでいくつかの投稿とTelerikWebサイトのチュートリアルを読みましたが、それらは不足しています-そしてドキュメントはオフになっています。何時間も読んだ後の迅速な修正を望んでいます。
大量の行(1M)の剣道グリッドを使用しようとしています。サイトの例では、ViewControllerアクションがデータセット全体を返していることがわかります。すべての行をフェッチすることは非常にコストのかかるプロセスであり、データセットは膨大です。
私の質問は、後続のすべてのコールバックが次のページを返し、最初の呼び出しがすべての行を一度にフェッチしないようにグリッドを構成するにはどうすればよいですか?
私のコードは次のようになります。
//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以上の行がありますそして、「return View(model」)を行うことは不可能です)ありがとう!