ASP数据模型中的ASP.net MVC4网格

时间:2014-04-23 17:57:02

标签: c# asp.net asp.net-mvc asp.net-mvc-4 gridview

我正在尝试在我的项目中使用GRID.MVC,但我在System.NotSupportedException: The Skip method is only supported for sorted input in LINQ to Entities. The OrderBy method must be called before the Skip method.文件的第27行遇到了此错误_grid.cshtml

 Ligne 25 : @helper RenderGridBody()
Ligne 26 : {
Ligne 27 :     if (!Model.ItemsToDisplay.Any())
Ligne 28 :     {
Ligne 29 :     <tr class="grid-empty-text">

这是我的观点:

@Html.Grid(Model).Columns(columns =>
                    {
                        columns.Add(item => item.OFFRE_ID).Titled("Custom column title").SetWidth(110);
                        columns.Add(item => item.REGION.NOM).Sortable(true);
                        columns.Add(item => item.DESCRIPTION).Sortable(false);
                        columns.Add(item => item.OFFRE_DATE).Sortable(true);
                    }).WithPaging(20)

请问如何解决?

2 个答案:

答案 0 :(得分:2)

您知道,.WithPaging会导致此问题。它使GridView只接受排序列表。这意味着传递未排序的列表将引发异常。

// Passing this to the gridview will throw an exception because it is not sorted.
var offre = db.OFFRE.Include(o => o.REGION); 

解决方案是在将列表传递到网格视图之前“排序”列表。

var offre = db.OFFRE
    .Include(o => o.REGION)
    .OrderBy(c => c.OFFRE_ID); // This converts the list into a sorted list.

return View(offre);

答案 1 :(得分:0)

解决这个问题我必须在Controller结果中添加OrderBy,如下所示:

public ActionResult Index()
        {
            var offre = db.OFFRE.Include(o => o.REGION);
            return View(offre.OrderBy(c => c.OFFRE_ID));
        }