web-dev-qa-db-fra.com

Grilles de radiomessagerie et de tri avec ASP.Net MVC

Je suis nouveau dans MVC et je ne vous explique pas comment vous pouvez faire de la pagination et du tri sur une grille. Je suis habitué à utiliser le contrôle asp.Net GridView avec un objet ObjectDataSource pointé vers des objets de notre couche de gestion. Dans ce cas, l'ODS gère toutes les opérations de pagination et de tri à l'aide des méthodes que notre ORM génère sur les objets.

J'ai envisagé d'utiliser le même ORM avec MVC - et les choses se passent bien - je viens de parcourir les collections pour créer le tableau sur la page - mais sans l'ODS pour gérer la pagination et le tri, je suis confus quant à comment je gérerais ça. Aurais-je un contrôleur distinct pour la pagination et le tri? 

Je comprends que je dois rouler le mien - mais par où commencer? J'ai créé un CustomerController et une vue qui affiche une table de clients semblable à celle ci-dessous - et je souhaite effectuer un tri sur les colonnes Prénom et Nom. Mon modèle a une méthode Sort () qui prend une expression de tri de chaîne au format qui serait utilisé par une paire GridView/ODS. Est-ce que je créerais une nouvelle action sur mon CustomerController appelée Trier et placerais un ActionLink dans mon en-tête?

    <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

Vous pouvez utiliser le même contrôleur, ajoutez simplement un paramètre supplémentaire et nommez-le sort. Ensuite, vérifiez dans le contrôleur quelle sorte de valeur a et triez vos données en fonction de ce paramètre.

Ou si vous voulez faire quelque chose côté client, vous pouvez utiliser quelque chose comme tablesorter , un plugin pour jQuery.

29
Morph

de nos jours, MVC 3 a maintenant un WebGrid prêt à l'emploi. Je sais que cette question a été posée il y a quelque temps, mais je me suis retrouvé là-dessus lorsque j'ai cherché quelque chose à propos de WebGrid. J'ai donc pensé qu'il devrait y avoir une réponse mentionnant le nouveau WebGrid.

Voici quelques bons messages sur son utilisation:

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/

Il prend en charge le tri, la pagination et quelques trucs Ajax. Il peut déjà faire beaucoup pour vous, mais vous pouvez également spécifier chaque colonne séparément. 

Mettre à jour:
Il existe également de nombreuses bibliothèques JavaScript disponibles qui peuvent faire la table pour vous. Personnellement, j'aime bien utiliser DataTables . Vous pouvez lui alimenter une table html existante générée sur le serveur ou lui donner un point de terminaison où il peut récupérer les données (toutes ou une seule page).

Il y a beaucoup plus, juste Google autour.

38
Matthijs Wessels

Avec MVC, vous devez en quelque sorte lancer votre propre tri, pagination, etc. Je suggérerais YUI DataTable ou certaines des autres grilles JavaScript disponibles.

De même, si vous pensez que vous faites un travail important dans la grille de données, vous voudrez peut-être jeter un coup d'œil à ASP.NET Dynamic Data, elle est spécialement conçue pour ces types d'interactions avec les ORM.

3
Nick Berardi

Première utilisation jQuery . jQuery est votre ami . Alors utilisez ce génial et probablement le meilleur contrôle de grille pour jQuery jqGrid .

Dans votre CustomerController, créez une action appelée CustomerData. Toutes les interactions avec la grille doivent indiquer cette action. 

Allez ici pour des tonnes d’exemples sur la façon d’utiliser jqGrid.

2
Donny V.

Nous utilisons le contrôle côté client JqxGrid de JqWidgets et nous sommes très satisfaits de ses performances liées au grand nombre d’enregistrements ainsi qu’à la pagination, au filtrage et au tri incorporés. Here est un exemple de liaison dans ASP.Net MVC 

0
CleanBold