分页和排序网格与ASP.Net MVC
分页和排序网格与ASP.Net MVC
我对MVC还不太了解,不明白如何在网格上进行分页和排序。我习惯使用asp.Net GridView控件,将其指向业务层中的对象,这样对象数据源(ODS)就可以使用ORM在对象上生成的方法来处理所有的分页和排序。
我尝试使用同样的ORM在MVC中进行操作,结果还不错,我只需遍历集合,构建页面上的表格。但是没有ODS来处理分页和排序,我对该如何处理感到困惑。我是否需要为分页和排序创建一个单独的控制器?
我知道需要自己来实现,但该从哪里开始呢?我已经创建了一个CustomerController和一个显示客户表格的视图,如下所示,我想根据FirstName或LastName列进行排序。我的模型上有一个Sort()方法,它接受一个字符串排序表达式,格式与GridView/ODS配对使用的格式相同。我是否应该在CustomerController上创建一个名为Sort的新操作,并在标题中放置一个ActionLink?
姓 |
名 |
---|---|
<%= Html.Encode(item.FirstName) %> |
<%= Html.Encode(item.LastName) %> |
Paging & Sorting grids with ASP.Net MVC(使用ASP.Net MVC分页和排序网格)问题的出现原因是需要对网格数据进行分页和排序。解决方法有两种:一种是在控制器中添加一个额外的参数sort,并根据该参数对数据进行排序;另一种是在客户端使用像tablesorter这样的jQuery插件对数据进行排序。
对于第一种方法,可以在相同的控制器中添加一个名为sort的额外参数。然后在控制器中检查sort的值,并根据该参数对数据进行排序。
代码示例:
public ActionResult Index(int page = 1, string sort = null) { // 根据sort参数对数据进行排序 if (sort == "name") { // 根据姓名排序 // ... } else if (sort == "date") { // 根据日期排序 // ... } else if (sort == "price") { // 根据价格排序 // ... } // 分页处理逻辑 // ... return View(); }
对于第二种方法,可以在客户端使用像tablesorter这样的jQuery插件对数据进行排序。tablesorter是一个强大的表格排序和分页插件,可以很方便地在客户端实现分页和排序功能。
代码示例:
Name | Date | Price |
---|
以上是解决Paging & Sorting grids with ASP.Net MVC问题的两种方法。可以根据具体需求选择适合的方法来实现网格数据的分页和排序功能。
Paging & Sorting grids with ASP.Net MVC问题的出现的原因是因为MVC 3内置了一个webGrid,这个问题是关于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/。webGrid支持排序、分页和一些Ajax操作。它已经可以为你做很多事情了,但你也可以单独指定每一列的属性。
更新:
还有许多可用的JavaScript库可以为您做表格。我个人喜欢使用DataTables。你可以将一个现有的由服务器生成的html表格传给它,或者给它一个可以检索数据的端点(全部或只有一页)。
还有很多其他的库,你可以在谷歌上搜索。
webGrid具有出色的内置功能,是MVC 3附带的,使用起来很简单。我喜欢它!这里有一篇在MSDN上的好文章,详细介绍了一些信息:msdn.microsoft.com/en-us/magazine/hh288075.aspx。