使用 ASP.Net MVC 进行分页和排序网格
-
20-08-2019 - |
题
我是 MVC 新手,并且不了解如何在网格上进行分页和排序。我习惯于将 asp.Net GridView 控件与指向业务层中对象的 ObjectDataSource 一起使用 - 在这种情况下,ODS 使用我们的 ORM 在对象上生成的方法来处理所有分页和排序。
我已经考虑过在 MVC 中使用相同的 ORM - 事情进展顺利 - 我只是循环遍历集合以在页面上构建表格 - 但没有 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>
解决方案
您可以使用相同的控制器,只需添加一个额外的参数和排序命名。然后,在价值排序都有什么控制器检查,并根据该参数数据进行排序。
或者,如果你想要做在客户端的东西,你可以使用像的tablesorter ,插件jQuery的。
其他提示
如今,MVC 3 现在拥有开箱即用的 webGrid。我知道这个问题是不久前提出的,但我在寻找有关 webGrid 的内容时最终遇到了这个问题。所以我认为它应该有一个提及新 webGrid 的答案。
这里有一些关于如何使用它的好帖子:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=615
http://www.nickharris.net/tag/webgrid/
它支持排序、分页以及一些 Ajax 功能。它已经可以为您做很多事情,但您也可以单独指定每个单独的列。
更新:
还有许多可用的 JavaScript 库可以为您制作表格。我个人喜欢用 数据表. 。您可以向其提供在服务器上生成的现有 html 表,或者为其提供一个可以检索数据(全部或仅一页)的端点。
还有很多,只有谷歌。
使用MVC你那种必须推出自己的排序,分页等,我会建议 YUI数据表或一些其他JavaScript网格在那里。
此外,如果你发现你自己在做大量的数据网格的工作,你可能想看一看ASP.NET动态数据,它是专门为这些类型对ORM的交互设计。