Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 剑道网格的自定义服务器排序_Asp.net Mvc_Sorting_Kendo Grid_Kendo Asp.net Mvc - Fatal编程技术网

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);
    }