分页&使用ASP.Net MVC对网格进行排序

时间:2009-01-30 17:46:37

标签: asp.net asp.net-mvc gridview objectdatasource

我是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>

5 个答案:

答案 0 :(得分:38)

现在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表,或者为其提供可以检索数据的端点(全部或仅一页)。

还有更多,只有谷歌。

答案 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)

我们一直在使用来自JqWidgets的客户端控制JqxGrid,并且非常满意其与大量记录相关的性能以及内置的分页,过滤和排序。 Here是在ASP.Net MVC

中绑定它的示例