我是MVC的新手,并没有关注你如何在网格上进行分页和排序。我习惯使用asp.Net GridView控件,ObjectDataSource指向业务层中的对象 - 在这种情况下,ODS处理所有的分页和放大器。使用ORM在对象上生成的方法进行排序。
我已经看过使用与MVC相同的ORM - 并且在那里工作得很好 - 我只是通过集合循环来在页面上构建表 - 但是没有ODS来处理分页和放大器。排序,我对如何处理它感到困惑。我是否有一个单独的控制器用于分页和排序?
我知道我需要自己动手 - 但我从哪里开始?我创建了一个CustomerController,以及一个显示如下所示的客户表的视图 - 我想对FirstName或LastName列进行排序。我的模型上有一个Sort()方法,它将采用GridView / ODS对使用的格式的字符串排序表达式。我会在我的CustomerController上创建一个名为Sort的新Action,并将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>
答案 0 :(得分:38)
现在MVC 3现在有一个开箱即用的webGrid。我知道这个问题是从不久前开始的,但是当我找到关于webGrid的东西时,我最终得到了它。所以我认为它应该有一个答案,提到新的webGrid。
以下是一些关于如何使用它的好帖子:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=615
http://www.nickharris.net/tag/webgrid/
它支持排序,分页和一些Ajax的东西。它可以为您做很多事情,但您也可以单独指定每个单独的列。
<强>更新强>
还有许多可用的JavaScript库可供您使用。我个人喜欢使用DataTables。您可以将其提供给服务器上生成的现有html表,或者为其提供可以检索数据的端点(全部或仅一页)。
还有更多,只有谷歌。
答案 1 :(得分:29)
您可以使用相同的控制器,只需添加一个额外的参数并将其命名为sort。然后检查控制器的排序值,并根据该参数对数据进行排序。
或者如果你想在客户端做事,你可以使用像tablesorter这样的jquery插件。
答案 2 :(得分:3)
使用MVC,你必须推出自己的排序,分页等。我建议YUI DataTable或其他一些JavaScript网格。
此外,如果您发现自己正在进行繁重的数据网格工作,您可能需要查看ASP.NET动态数据,它专门针对ORM的这些类型的交互而设计。
答案 3 :(得分:2)
首先使用jQuery。 jQuery是你的朋友。 然后使用这个真棒,可能是jQuery jqGrid的最佳网格控件。
在CustomerController中创建一个名为CustomerData的操作。与Grid的所有交互都应指向此操作。
有关如何使用jqGrid的大量示例,请转到here。
答案 4 :(得分:0)