Asp.net mvc 剑道网格的自定义服务器排序
我需要在剑道网格上应用自定义服务器排序。 他是我的实体:Asp.net mvc 剑道网格的自定义服务器排序,asp.net-mvc,sorting,kendo-grid,kendo-asp.net-mvc,Asp.net Mvc,Sorting,Kendo Grid,Kendo Asp.net Mvc,我需要在剑道网格上应用自定义服务器排序。 他是我的实体: public class User { public virtual ICollection<Region> Regions { get; set; } //other properties } public class Region { public string Name { get; set; } } 用法: public ActionResult Read([DataSourc
public class User
{
public virtual ICollection<Region> Regions { get; set; }
//other properties
}
public class Region
{
public string Name { get; set; }
}
用法:
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
IQueryable<User> users = _userApplicationService.GetAll();
users = FilterByRegions(users, request.Sorts);
DataSourceResult result = users.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
公共操作结果读取([DataSourceRequest]DataSourceRequest请求)
{
IQueryable users=\u userApplicationService.GetAll();
users=FilterByRegions(users,request.Sorts);
DataSourceResult=users.ToDataSourceResult(请求);
返回Json(结果,JsonRequestBehavior.AllowGet);
}
但是调用.ToDataSourceResult(请求)
似乎忽略了我之前的排序
我怎样才能达到预期的结果?在使用.ToDataSourceResult(请求)
之前,是否可以向IQueryable
添加一些自定义逻辑
我知道可以使用DataSourceRequest
手动构造查询,但这很糟糕,因为我有很多不同的过滤器和排序
谢谢。我有一个类似的要求,我必须使用剑道网格实现自定义服务器端分页和排序。根据,您应该将ToDataSourceResult扩展方法中的请求参数更改为空请求,而不是传入参数请求。 所以
DataSourceResult-result=users.ToDataSourceResult(请求)
应更改为DataSourceResult result=users.ToDataSourceResult(newdatasourcerequest())代码>。这样做有助于我正确地实现服务器端分页和排序。它不会被忽略。如果有其他排序,则需要创建不同的表达式。这就是林克的工作方式。请注意,您只能有一个OrderBy…
。任何进一步的将取代以前的。在Linq中,您需要使用然后使用…
。我的建议是在显式发送区域名称时创建投影,然后修改请求排序以添加新的投影属性
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
IQueryable<User> users = _userApplicationService.GetAll();
users = FilterByRegions(users, request.Sorts);
DataSourceResult result = users.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}