2016-11-30 44 views
1

我有我的表正确显示,搜索和排序。但是,当我搜索关键字并在我的表格中显示记录并单击列标题进行排序时,搜索结果将被清除,并且我总是会将其带回原始页面,而不是对搜索结果进行排序。我不明白为什么会发生这种情况?任何帮助将不胜感激。谢谢使用搜索关键字排序HTML表格?

控制器:

public ActionResult ViewInventory(string owners, string keyword, string sortOrder) 
     { 
      ViewBag.OwnerSort = sortOrder == "owner_asce" ? "owner_desc" : "owner_asce"; 

      var records = from s in db.Assets select s; 
      switch (sortOrder) 
      { 
       case "owner_asce": 
        records = records.OrderBy(s => s.InventoryOwner); 
       break; 

       case "owner_desc": 
        records = records.OrderByDescending(s => s.InventoryOwner); 
       break; 
      } 
      return View(records.ToList()); 
} 

查看:

@model IEnumerable<CTS_Inventory.Models.Asset> 

@{ 
    ViewBag.Title = "View Inventory"; 
} 

<h2>View Inventory</h2> 


@using (Html.BeginForm()) 
{ 
    <p> 

     Keyword Search: @Html.TextBox("keyword") 

     <input type="submit" value="Search" /> 
    </p> 

    <table class="table" border="1"> 
     <tr> 
      <th> 
       @Html.ActionLink("owners","ViewInventory", new { sortOrder = ViewBag.OwnerSort}) 
      </th> 
     </tr> 

     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.InventoryOwner) 
       </td> 
      </tr> 
     } 
    </table> 
} 

回答

1

排序时,您需要通过keyword参数也是如此。

首先,从动作传递给视图:

public ActionResult ViewInventory(string owners, string keyword, string sortOrder) 
{ 
    ViewBag.OwnerSort = sortOrder == "owner_asce" ? "owner_desc" : "owner_asce"; 
    ViewBag.Keyword = keyword; 

    // ... 
} 

然后在您的视图:

<th> 
    @Html.ActionLink("owners","ViewInventory", new { sortOrder = ViewBag.OwnerSort, keyword = ViewBag.Keyword }) 
</th> 
+0

谢谢!!最后让它工作。一直困住这个4小时试图弄清楚。 – CRich