53

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

5 回答 5

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 表,或者给它一个端点,它可以检索数据(全部或仅一页)。

还有更多,只是谷歌。

于 2011-03-18T09:02:36.113 回答
29

您可以使用相同的控制器,只需添加一个附加参数并将其命名为排序。然后在控制器中检查 sort 的值,并根据该参数对数据进行排序。

或者如果你想在客户端做事,你可以使用类似tablesorter的东西,一个 jquery 的插件。

于 2009-01-30T22:43:23.980 回答
3

使用 MVC,您必须自己进行排序、分页等。我建议您使用YUI DataTable或其他一些 JavaScript 网格。

此外,如果您发现自己在做繁重的数据网格工作,您可能想看看 ASP.NET 动态数据,它是专门为这些类型的 ORM 交互而设计的。

于 2009-01-30T17:58:33.073 回答
1

首先使用jQuery。jQuery 是你的朋友。然后为 jQuery jqGrid使用这个很棒而且可能是最好的 Grid 控件。

在您的 CustomerController 中创建一个名为 CustomerData 的操作。所有与 Grid 的交互都应该指向这个动作。

这里查看有关如何使用 jqGrid 的大量示例。

于 2009-01-30T21:55:23.173 回答
0

我们一直在使用来自JqWidgets的客户端控件 JqxGrid,并且对它与大量记录相关的性能以及内置的分页、过滤、排序非常满意。是在 ASP.Net MVC 中绑定它的示例

于 2015-02-23T11:59:37.100 回答