【问题标题】:MVCGrid.Net sorting issue - sortdirectionMVCGrid.Net 排序问题 - sortdirection
【发布时间】:2016-02-26 21:41:15
【问题描述】:

我正在尝试使用 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 测试\MVCGrida\MVCGrida\App_Start\MVCGridConfig.cs 39 46 MVCGrida

【问题讨论】:

    标签: asp.net-mvc mvcgrid.net


    【解决方案1】:

    我也有同样的问题。我不确定本教程中的实体框架示例返回的内容是否与标准 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;                                 
     }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-19
        • 2019-09-17
        • 2018-10-07
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 2017-03-30
        • 2011-12-06
        相关资源
        最近更新 更多