4

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

エラーは、case ステートメントのクエリにあります。可能であれば、助けてください。ビジュアルスタジオが与えているエラーは次のとおりです。

エラー 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_Start\MVCGridConfig.cs 39 46 MVCGrida

4

2 に答える 2

3

私も同じ問題を抱えていました。チュートリアルの Entity Framework の例が標準の 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;                                 
 }

お役に立てれば。

于 2016-05-06T16:32:19.260 に答える