Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 MVCGrid.Net排序问题-排序方向_Asp.net Mvc_Mvcgrid.net - Fatal编程技术网

Asp.net mvc MVCGrid.Net排序问题-排序方向

Asp.net mvc MVCGrid.Net排序问题-排序方向,asp.net-mvc,mvcgrid.net,Asp.net Mvc,Mvcgrid.net,我正在尝试使用MVCGrid.Net设置网格,但使用排序的代码在options.sortdirection中出现错误 public static void RegisterGrids() { MVCGridDefinitionTable.Add("CustomerGrid", new MVCGridBuilder<Customer>() .WithAuthorizationType(AuthorizationType.AllowAnonymo

我正在尝试使用MVCGrid.Net设置网格,但使用排序的代码在options.sortdirection中出现错误

 public static void RegisterGrids()
    {
        MVCGridDefinitionTable.Add("CustomerGrid", new MVCGridBuilder<Customer>()
        .WithAuthorizationType(AuthorizationType.AllowAnonymous)
        .AddColumns(cols =>
        {
            cols.Add("Id").WithSorting(false).WithValueExpression(p => p.CustomersID.ToString());
            cols.Add("FirstName").WithHeaderText("First Name")
                .WithValueExpression(p => p.Name);
            cols.Add("Company").WithHeaderText("Company")
                .WithValueExpression(p => p.Company);
        })
        .WithSorting(true, "FirstName")
        .WithRetrieveDataMethod((context) =>
         {
            var options = context.QueryOptions;
            var result = new QueryResult<Customer>();
                using (var db = new Entities())
                {
                    var query = db.Customers.ToList();
                    if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                    {
                        switch (options.SortColumnName.ToLower())
                        {
                            case "name":
                                 query = query.OrderBy(c=>c.Company, options.SortDirection);
                                break;

                        }
                    }
                    result.Items = query;
                }
                return result;
            })
        );
    }
publicstaticvoidregistergrids()
{
添加(“CustomerGrid”,新的MVCGridBuilder())
.WithAuthorizationType(AuthorizationType.AllowAnonymous)
.AddColumns(cols=>
{
Add(“Id”).WithSorting(false).WithValueExpression(p=>p.CustomersID.ToString());
cols.Add(“FirstName”)。带标题文本(“FirstName”)
.WithValueExpression(p=>p.Name);
列添加(“公司”)和标题文本(“公司”)
.带值表达式(p=>p.Company);
})
.使用排序(正确,“名字”)
.WithRetrieveDataMethod((上下文)=>
{
var options=context.QueryOptions;
var result=new QueryResult();
使用(var db=new Entities())
{
var query=db.Customers.ToList();
如果(!String.IsNullOrWhiteSpace(options.SortColumnName))
{
开关(options.SortColumnName.ToLower())
{
案例“名称”:
query=query.OrderBy(c=>c.Company,options.SortDirection);
打破
}
}
result.Items=查询;
}
返回结果;
})
);
}
错误在case语句中的查询中。如果可能,请协助。 visual studio给出的错误是:

错误1“System.Collections.Generic.List”不存在 不包含“OrderBy”和最佳扩展方法的定义 超载 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, System.Func, System.Collections.Generic.IComparer)“”具有一些无效的 参数C:\MVC Tests\MVCGrida\MVCGrida\App\u Start\MVCGridConfig.cs 39 46 MVCGrida


我也有同样的问题。我不确定教程中的实体框架示例返回的内容是否与标准IEnumerable不同,或者这只是教程中的一个错误。无论哪种方式,我都必须手动解决我的案例中的排序问题。虽然不是世界上最漂亮的,但它很管用

例如:

switch (options.SortColumnName.ToLower())
{
    case "name":
           if (options.SortDirection == SortDirection.Asc)
                 query = query.OrderBy(c=>c.Company);
           else if (options.SortDirection == SortDirection.Dsc)
                 query = query.OrderByDescending(c=>c.Company);    
            break;                                 
 }

希望这有帮助。

我创建了一个扩展方法来匹配文档中的内容

private static IEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, SortDirection sort)
    {
        switch (sort)
        {
            case SortDirection.Asc:
                return source.OrderBy(keySelector);

            case SortDirection.Dsc:
                return source.OrderByDescending(keySelector);

            case SortDirection.Unspecified:
            default:
                return source;
        }
    }
eList.OrderBy(x => x.Field, options.SortDirection);