111 votes

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?

144voto

WebDude Points 3326

C'est vraiment à propos de ce que vous essayez d'atteindre

  • Gridview Limitée dans la conception, fonctionne comme un tableau html. De plus dans la construction de fonctionnalités comme l'édition/mise à jour de la page, trier. Beaucoup de frais généraux.

  • DataGrid - Ancienne version de la Gridview. Un gridview est une super grille de données.

  • Datalist - plus personnalisable version de la Gridview. A également des frais généraux. Plus de travail manuel que vous avez à les concevoir vous-même.

  • ListView - la nouvelle Datalist :). Près d'un hybride de la datalist et gridview où vous pouvez utiliser la pagination et de construire en Gridview comme fonctionnalité, mais ont la liberté de conception. L'un des nouveaux contrôles dans cette famille

  • Répéteur - Très léger. Pas construit dans la fonctionnalité de comme les en-Têtes, Pieds de page. A le moins de frais généraux.

28voto

John Rudy Points 16436

Tout le monde a frappé: Il Dépend.

Maintenant, pour certains d'orientation spécifique (en s'appuyant sur WebDude excellente réponse ci-dessus) ...

Est-ce que votre conception ajustement naturel de feuille de calcul ou une grille de données? GridView.

Avez-vous besoin pour afficher une liste ou d'une autre vue formatée de données, éventuellement avec des en-têtes et pieds de page, et probablement avec des contrôles spécifiques et/ou de mise en forme pour chaque enregistrement de données? (Par exemple, des liens personnalisés, éventuellement LinkButtons, ou de certains contrôles d'édition?) Est-ce à afficher précisément pas inscrivent naturellement dans une feuille de calcul ou une grille? ListView

Si vous répondez à tous les critères de la Liste, mais vous serait naturellement s'intégrer dans une grille, vous pouvez envisager de DataList.

- Je aller pour Répéteur quand j'ai juste besoin de quelques données de base itéré avec une certaine conception personnalisée bits, aucun en-tête, pas de pieds, agréable et propre.

19voto

imanabidi Points 3203

En mode Code (affichage avancé)

Le CompositeDataBoundControl classes de la hiérarchie (et de contrôle). ces contrôles héberge d'autres asp.net les contrôles dans leurs modèles d'affichage lié-les données à l'utilisateur

enter image description here


Balisage Vue

Déclarant l'exemple de code suivant est possible pour tous les 3( ListView, DataList , Répéteur)

<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate>
            <span style="background-color: navy; border: 1px solid black; color: white; padding: 5px; margin-right: 16px;"><%# Eval("Name")%>
            <asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%# Eval("GuideServiceId") %>' Text='Delete' ForeColor="Red" />
        </span>
</ItemTemplate>
<asp:ListView>

dans les listes ci-dessous Vous pouvez voir les modèles disponibles et les options pour chacun d'entre eux et de voir les différences pour vous-même

ListView (note de l'édition,de groupe,d'insertion ,de mise en page)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorTemplate
  • GroupTemplate
  • lnsertltemTemplate
  • ItemSeparatorTemplate
  • ItemTemplate
  • LayoutTemplate
  • SelectedltemTemplate

DataList (notez le Style de paires)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate
  • ItemStyle
  • ItemTemplate
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

Répéteur

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Certaines descriptions pour mieux précisions

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 d'autres modèles, qui permettent le plus de scénarios lorsque vous travaillez avec vos données. Ces modèles comprennent les LayoutTemplate,GroupTemplate,ItemSeparatorTemplate.

Le contrôle ListView (contrairement à DataList et Répéteur) aussi implicitement prend en charge la capacité de modifier, insérer et 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 la Répétition de contrôle. Il répète des données pour chaque ligne de votre ensemble de données, et il affiche ces données en fonction de votre modèle défini. Toutefois, il précise les données définies dans le modèle au sein de diverses structures HTML. Ceci inclut des options pour l'horizontale ou à la verticale mise en page, et il vous permet également de définir comment les données doivent être répétées, sous forme de flux ou de la disposition de table.

Le contrôle DataList ne pas utiliser automatiquement un contrôle de source de données pour modifier les données. Au lieu de cela, il fournit des événements de commandes dans lequel vous pouvez écrire votre propre code pour ces scénarios. Pour permettre à ces événements, vous ajoutez un Bouton de contrôle pour l'un des modèles et placer le bouton La propriété CommandName pour le modifier, supprimer, mettre à jour ou annuler mot-clé. Approprié l'événement est ensuite soulevé par le contrôle DataList.

Le Contrôle Repeater

Le contrôle Repeater utilise également des modèles pour définir liaison personnalisée. Cependant, il n'a pas d'afficher les données des enregistrements individuels. Au lieu de cela, il reprend les lignes de données que vous spécifiez dans votre modèle. Cette vous permet de créer une seule ligne de données et de les faire répéter sur votre page.

Le contrôle Repeater est une lecture seul modèle. C'est, il prend en charge uniquement l'ItemTemplate. Il n'est pas implicitement en charge de l'édition, de l'insertion et de suppression. Vous devriez envisager de l'un des d'autres contrôles si vous avez besoin de cette fonctionnalité, sinon vous aurez ce code vous-mêmepour le contrôle Repeater.


Les Descriptions qui précèdent sont d' Examen MCTS 70-515 Web Développement d'Applications avec Microsoft.NET Cadre 4 livre.

DataGrid n'est même pas mentionné dans ce livre, et est remplacé par populaire GridViews et répondu gentiment par d'autres utilisateurs

6voto

Andy Brown Points 1686

Effectivement! J'ai blogué sur les différences entre les outils de données ASP.NET 4.0 . Fondamentalement, les vues de grille 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 grille et d’ignorer d’abord les autres contrôles.

5voto

Joseph Daigle Points 16429

Tout se résume à la façon dont vous voulez mise en page de vos données.

Si vous avez besoin de contrôler la mise en page (comme les tables contre le CSS contre quoi que ce soit), lors de l'utilisation d'un Répéteur ou ListView. Entre les deux, ListView vous donne beaucoup plus d'événements et des commandes intégrées pour la modification, la sélection, de l'insertion. En outre, la pagination et les fonctionnalités de regroupement. Un Répéteur est extrêmement simple, il répète une mise en page avec les données. Puisque vous êtes en train de construire la mise en page à la main, Listview et Répéteur besoin de plus de code.

GridView est une mise à jour de grille de données, donc il n'y a guère de raison de l'utilisation de grille de données. GridView fonctionne vraiment très bien lors de l'accro à la norme ASP.NET les sources de données, mais vous limite à une présentation tabulaire avec beaucoup de règles de présentation. GridView nécessite moins de code puisque vous êtes à l'aide d'un modèle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X