2014-08-27 33 views
0

我想添加列排序链接到我的web应用程序中的“截止日期”列,我无法正确工作。目前,这是我在控制器代码,我已经定义了switch语句来确定用户想要如何排序:我想添加列排序链接到索引页

var items = from s in db.Items 
        select s; 

     ViewBag.DateSortParm = sortOrder == "DueDate" ? "duedate_desc" : "DueDate"; 

     switch (sortOrder) 
     { 
      case "duedate_desc": 
       items = items.OrderByDescending(s => s.DueDate); 
       break; 
      case "DueDate": 
       items = items.OrderBy(s => s.DueDate); 
       break; 
      default: 
       items = items.OrderByDescending(s => s.DueDate); 
       break; 

在索引视图这里是我的代码:

<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.First().ItemDescription) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.First().Quantity) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.First().Price) 
    </th> 
    <th> 
     @Html.ActionLink("Due Date", "Index", new 
     { 
      sortOrder=ViewBag.DateSortParm, 

     }) 

最后,这是我相信我得到我的错误,回到控制器,当我返回查看我有这样的代码:

int pageSize = 15; 
     int pageNumber = (page ?? 1); 
     pageNumber = page == null ? (ViewBag.pageData == null ? 1 : (int)ViewBag.pageData) : page.Value; 
     ViewBag.pageData = page; 
     ViewBag.searchBy = searchBy; 
     ViewBag.search = search; 
     return View(items.OrderBy(i => i.ItemId).ToPagedList(pageNumber,pageSize)); 

我要有.OrderBy去渲染,otherwi视图如果我收到“跳过”方法错误。这是否导致问题,为什么列排序链接将无法正常工作?任何可能的解

- 谢谢!

回答

0

我想出了我的问题的答案。我必须删除.OrderBy子句。