我是 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://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 库可以为您制作表格。我个人喜欢用 数据表. 。您可以向其提供在服务器上生成的现有 html 表,或者为其提供一个可以检索数据(全部或仅一页)的端点。

还有很多,只有谷歌。

使用MVC你那种必须推出自己的排序,分页等,我会建议 YUI数据表或一些其他JavaScript网格在那里。

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

首先使用 jQuery的。 jQuery是你的朋友。 然后使用此真棒和可能的jQuery 的jqGrid 。

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

转到这里关于如何使用的jqGrid吨的例子。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top