Répéteur, ListView, DataList, DataGrid, GridView… Lequel choisir?

Tant de contrôles différents à choisir! Quelles sont les meilleures pratiques pour déterminer quel contrôle utiliser pour afficher les données dans ASP.NET?

C’est vraiment ce que vous essayez de réaliser

  • Gridview – Limité dans la conception, fonctionne comme un tableau html. Plus de fonctionnalités intégrées comme edit / update, page, sort. Beaucoup de frais généraux.

  • DataGrid – Ancienne version de Gridview. Un gridview est une super datagrid.

  • Datalist – version plus personnalisable de Gridview. A aussi des frais généraux. Plus de travail manuel que vous devez le concevoir vous-même.

  • ListView – le nouveau datalist :). Presque un hybride de datalist et de gridview où vous pouvez utiliser la pagination et créer des fonctionnalités similaires à Gridview, mais qui ont la liberté de conception. Un des nouveaux contrôles de cette famille

  • Répéteur – Très léger. Aucune fonctionnalité intégrée comme les en-têtes, les pieds de page. A le moins de frais généraux.

Tout le monde l’a frappé: ça dépend.

Maintenant, pour des conseils spécifiques (en développant l’excellente réponse de WebDude ci-dessus) …

Votre conception s’insère-t-elle dans une feuille de calcul ou une vue de grid naturelle des données? GridView

Avez-vous besoin d’afficher une liste ou une autre vue formatée des données, éventuellement avec des en-têtes et des pieds de page, et probablement avec des contrôles et / ou un formatage spécifiques pour chaque enregistrement de données? (Par exemple, des liens personnalisés, éventuellement des LinkButtons, ou des contrôles d’édition spécifiques?) Cet affichage ne s’intègre-t-il pas naturellement dans une vue de feuille de calcul ou de grid? ListView

Si vous répondez à tous les critères de ListView, mais que vous tenez naturellement dans une grid, vous pouvez considérer DataList .

Je vais pour Repeater quand j’ai juste besoin de quelques données de base itérées avec des bits de conception personnalisés, pas d’en-têtes, pas de pieds de page, agréables et propres.

Markup View

La déclaration de l’exemple de code suivant est possible pour tous les 3 (ListView, DataList, Repeater)

  <%# Eval("Name")%>   

dans les listes suivantes Vous pouvez voir les modèles et options disponibles pour chacun d’eux et voir les différences par vous-même

ListView (notez l’édition, le groupe, l’insertion, la mise en page)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorModèle
  • GroupTemplate
  • lnsertltemtemplate
  • ItemSeparatorTemplate
  • ItemTemplate
  • LayoutTemplate
  • SelectedltemTemplate

DataList (notez les paires de styles)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate
  • ItemStyle
  • ItemTemplate
  • SelectedLeStyle
  • SelectedltemTemplate
  • Séparateur
  • SeparatorTemplate

Répétiteur

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Affichage du code (vue avancée)

CompositeDataBoundControl :

regardez la hiérarchie des classes suivantes (et les contrôles associés).

ces contrôles héberge d’autres contrôles asp.net dans leurs modèles pour afficher les données liées à l’utilisateur

Les classes CompositeDataBoundControl (et les contrôles associés)

Quelques descriptions pour de meilleures clarifications

Le contrôle ListView

Le contrôle ListView utilise également des modèles pour l’affichage des données. Cependant, il prend en charge de nombreux modèles supplémentaires qui permettent de créer davantage de scénarios lorsque vous travaillez avec vos données. Ces modèles incluent le LayoutTemplate, GroupTemplate, ItemSeparatorTemplate .

Le contrôle ListView ( contrairement à DataList et Repeater ) prend également en charge la possibilité de modifier, d’insérer et de supprimer des données à l’aide d’un contrôle de source de données. Vous pouvez définir des modèles individuels pour chacun de ces scénarios.

Le contrôle DataList

Le contrôle DataList fonctionne comme le contrôle Repeater . Il répète les données de chaque ligne de votre dataset et affiche ces données en fonction du modèle défini. Cependant , il expose les données définies dans le modèle dans différentes structures HTML. Cela inclut des options pour la disposition horizontale ou verticale et vous permet également de définir la manière dont les données doivent être répétées, sous forme de présentation de stream ou de tableau.

Le contrôle DataList n’utilise pas automatiquement un contrôle de source de données pour modifier des données. Au lieu de cela, il fournit des événements de commande dans lesquels vous pouvez écrire votre propre code pour ces scénarios. Pour activer ces événements, vous ajoutez un contrôle Button à l’un des modèles et définissez la propriété CommandName du bouton sur le mot clé modifier, supprimer, mettre à jour ou annuler. L’événement approprié est ensuite déclenché par le contrôle DataList.

Le contrôle du répéteur

Le contrôle Repeater utilise également des modèles pour définir une liaison personnalisée. Cependant, les données ne sont pas enregistrées individuellement. Au lieu de cela, il répète les lignes de données que vous spécifiez dans votre modèle. Cela vous permet de créer une seule rangée de données et de la répéter sur votre page.

Le contrôle Repeater est un modèle en lecture seule . C’est-à-dire qu’il ne prend en charge que le ItemTemplate. Il ne prend pas implicitement en charge la modification, l’insertion et la suppression. Vous devriez envisager l’un des autres contrôles si vous avez besoin de cette fonctionnalité, sinon vous devrez le coder vous-même pour le contrôle Repeater.


Les descriptions ci-dessus sont extraites du manuel MCTS Exam 70-515 Développement d’applications Web avec Microsoft.NET Framework 4 .

DataGrid n’est même pas mentionné dans ce livre et est remplacé par les populaires GridViews, auxquels les autres utilisateurs ont bien répondu.

Effectivement! J’ai blogué sur les différences entre les outils de données ASP.NET 4.0 . Fondamentalement, les vues de grid sont le moyen le plus puissant de présenter des informations tabulaires, tandis que les commandes ListView sont destinées à des affichages plus compliqués de données répétées. Si je donnais des conseils à un débutant ASP.NET, je leur dirais d’apprendre les vues de grid et d’ignorer d’abord les autres contrôles.

Tout se résume à la façon dont vous souhaitez mettre en forme vos données.

Si vous avez besoin de contrôler la mise en page (comme les tables versus les CSS par opposition à quoi que ce soit), utilisez un répéteur ou une liste. Entre les deux, ListView vous offre beaucoup plus d’événements et de commandes intégrées pour l’édition, la sélection et l’insertion. Fonctionnalités supplémentaires de pagination et de regroupement. Un répéteur est extrêmement simple, il répète une mise en page avec les données. Puisque vous créez la mise en page à la main, Listview et Repeater nécessitent plus de code.

GridView est un DataGrid mis à jour, il n’y a donc pratiquement aucune raison d’utiliser DataGrid. GridView fonctionne très bien lorsqu’il est connecté à des sources de données ASP.NET standard, mais vous limite à une présentation tabulaire avec de nombreuses règles de mise en page. GridView nécessite moins de code car vous utilisez une disposition intégrée.