Kendo排序,分组客户端还是服务器端?如果一次获取所有记录或者将数据加载到各个部分中,它是如何工作的。我试过验证,但无法用答案结束
答案 0 :(得分:0)
您可以在客户端或服务器端执行此操作。
对于服务器端(即部分加载的数据):
对于客户端(即一次获取所有数据):
自定义服务器端 - 例如您没有网格数据的IQueryable模型:
http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/custom-binding
答案 1 :(得分:0)
如果要进行客户端绑定(AJAX)绑定,它将以所需的部分检索数据,只需确保不在.ServerFiltering(false)
中放置DataSource
(和其他类似方法)配置。
此外,在您的控制器中,在返回数据时使用.ToDataSource()
扩展方法,如下所示:
public ActionResult GetTasks([DataSourceRequest] DataSourceRequest request)
{
var tasks = _db.Tasks; // however you want to get your data
return Json(tasks.ToDataSourceResult(request), JsonRequestBehavior .AllowGet);
}
请注意,正如iandayman所提到的,您将要使用IQueryable<T>
数据源才能正常工作,并将分页/排序/过滤操作推迟到数据库。
如果您想进行服务器端绑定,您也可以使用IQueryable数据源,并且还会将执行推迟到数据库。
答案 2 :(得分:0)
正如@iandayman所指出的那样,可以一次获取所有记录以执行客户端处理,但出于性能原因,我建议在一个页面中从服务器获取数据 - 结果一次。
排序,过滤,分页和分组可以在服务器端执行,如my answer here中所述,它使用来自Telerik的Kendo.Mvc
库和IQueryable服务器端数据源,例如Entity Framework或Telerik数据访问。
请记住,我的答案还使用了纯JavaScript的Kendo DataSource声明,而不是MVC包装器,因为当我第一次编写解决方案时,它使我能够更好地控制所有DataSource选项。从那时起,Telerik可能已经改进了包装器(参见Telerik的MVC方法here或使用包装器here的WebApi方法)。