public JsonResult GetPeopleWithServersideFiltering([Kendo.Mvc.UI.DataSourceRequest] Kendo.Mvc.UI.DataSourceRequest request) { int totalNumberOfItems; IEnumerable<Person> result; string orderByClause = new KendoSortBuilder().CreateString(request.Sorts, "FirstName asc").CleanString(); KendoFilterBuilder b = new KendoFilterBuilder(); FilterDto kendoFilter = b.AssessFilters(request.Filters).BuildDynamicLinqQuery(); if (kendoFilter.IsFilterApplying) { totalNumberOfItems = People.Where(kendoFilter.DynamicLinqString, kendoFilter.Parameters).Count(); result = People.OrderBy(orderByClause).Where(kendoFilter.DynamicLinqString, kendoFilter.Parameters).Skip((request.Page - 1) * request.PageSize).Take(request.PageSize); } else { totalNumberOfItems = People.Count(); result = People.OrderBy(orderByClause).Skip((request.Page - 1) * request.PageSize).Take(request.PageSize); } return Json(new { data = result, total = totalNumberOfItems }, JsonRequestBehavior.AllowGet); }
public JsonResult GetPeopleWithServersideSorting([Kendo.Mvc.UI.DataSourceRequest] Kendo.Mvc.UI.DataSourceRequest request) { // the order string to pass to Dynamic LINQ string orderByClause = new KendoSortBuilder().CreateString(request.Sorts, "FirstName asc").CleanString(); // the implementation of server side pagination var result = People.OrderBy(orderByClause).Skip((request.Page - 1) * request.PageSize).Take(request.PageSize); var totalNumberOfItems = People.Count(); return Json(new { data = result, total = totalNumberOfItems }, JsonRequestBehavior.AllowGet); }