使用 ASP.Net MVC 對網格進行分頁和排序
我是 MVC 的新手,並沒有遵循您如何在網格上進行分頁和排序。我習慣於將 asp.Net GridView 控制項與指向我們業務層中對象的 ObjectDataSource 一起使用——在這種情況下,ODS 使用我們的 ORM 在對像上生成的方法處理所有分頁和排序。
我已經研究過將相同的 ORM 與 MVC 一起使用 - 那裡的情況很好 - 我只是循環遍歷集合以在頁面上建構表格 - 但沒有 ODS 來處理分頁和排序,我很困惑我將如何處理。我會有一個單獨的控制器來進行分頁和排序嗎?
我知道我需要自己動手——但我從哪裡開始呢?我創建了一個 CustomerController,以及一個顯示如下所示客戶表的視圖 - 我想對 FirstName 或 LastName 列進行排序。我的模型上有一個 Sort() 方法,它將採用 GridView/ODS 對使用的格式的字元串排序表達式。我會在我的 CustomerController 上創建一個名為 Sort 的新動作,並在我的標題中放置一個 ActionLink 嗎?
<table> <tr> <th> First Name </th> <th> Last Name </th> </tr> <% foreach (var item in Model) { %> <tr> <td> <%= Html.Encode(item.FirstName) %> </td> <td> <%= Html.Encode(item.LastName) %> </td> </tr> <% } %> </table>
您可以使用相同的控制器,只需添加一個附加參數並將其命名為排序。然後在控制器中檢查 sort 的值,並根據該參數對數據進行排序。
或者如果你想在客戶端做事,你可以使用類似tablesorter的東西,一個 jquery 的外掛。
現在 MVC 3 現在有一個開箱即用的 webGrid。我知道這個問題是不久前提出的,但是在尋找有關 webGrid 的內容時,我最終想到了它。所以我認為它應該有一個提到新 webGrid 的答案。
這裡有一些關於如何使用它的好文章:
<http://www.dotnetcurry.com/ShowArticle.aspx?ID=615>
<http://cnug.co.in/blogs/shijuv/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx>
<http://www.nickharris.net/tag/webgrid/>
它支持排序、分頁和一些 Ajax 的東西。它已經可以為您做很多事情,但您也可以單獨指定每個單獨的列。
更新:
還有許多可用的 JavaScript 庫可以為您完成表格。我個人喜歡使用DataTables。您可以為它提供一個在伺服器上生成的現有 html 表,或者給它一個端點,它可以檢索數據(全部或僅一頁)。
還有更多,只是Google。