web-dev-qa-db-ja.com

ASP.Net MVCを使用したグリッドのページングと並べ替え

私はMVCを初めて使用しますが、グリッドでページングと並べ替えを行う方法には従いません。私はビジネス層のオブジェクトを指すObjectDataSourceでasp.Net GridViewコントロールを使用することに慣れています。その場合、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>
52
Scott Ivey

同じコントローラーを使用できます。パラメーターを追加して、sortという名前を付けるだけです。次に、コントローラで値の並べ替えを確認し、そのパラメーターに基づいてデータを並べ替えます。

または、クライアント側で何かをしたい場合は、jqueryのプラグインである tablesorter のようなものを使用できます。

29
Morph

現在、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ページのみ)を提供できます。

他にもたくさんありますが、Googleだけです。

38

MVCでは、独自の並べ替えやページングなどを行う必要があります。 YUI DataTable または他のJavaScriptグリッドをいくつかお勧めします。

また、自分が重いデータグリッドの仕事をしていることに気付いた場合、ASP.NET Dynamic Dataを見てみたいと思うかもしれません。これはORMに対するこれらのタイプの相互作用のために特別に設計されています。

3
Nick Berardi

最初に jQuery を使用します。 jQueryはあなたの友達です。次に、この素​​晴らしい、おそらくjQueryに最適なグリッドコントロール jqGrid を使用します。

CustomerControllerで、CustomerDataというアクションを作成します。グリッドとのすべての対話は、このアクションを指す必要があります。

Go here jqGridの使用方法に関する多くの例があります。

2
Donny V.

JqWidgets からクライアント側のコントロールJqxGridを使用しており、ページング、フィルタリング、内部での並べ替えとともに、膨大な数のレコードに関連するパフォーマンスに非常に満足しています。 ここ は、ASP.Net MVC内でバインドする例です

0
CleanBold