Tant de commandes différentes à choisir! Quelles sont les meilleures pratiques pour déterminer le contrôle à utiliser pour afficher des données dans ASP.NET?
Tant de commandes différentes à choisir! Quelles sont les meilleures pratiques pour déterminer le contrôle à utiliser pour afficher des données dans ASP.NET?
Réponses:
Il s'agit vraiment de ce que vous essayez d'accomplir
Gridview - Conception limitée, fonctionne comme une table html. Plus de fonctionnalités intégrées telles que modifier / mettre à jour, page, trier. Beaucoup de frais généraux.
DataGrid - Ancienne version de Gridview. Un gridview est un super datagrid.
Datalist - version plus personnalisable de Gridview. A également des frais généraux. Plus de travail manuel car 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 construire dans Gridview comme des fonctionnalités, mais avoir la liberté de conception. L'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 quelques conseils spécifiques (développant l'excellente réponse de WebDude ci-dessus) ...
Votre conception s'inscrit-elle dans une feuille de calcul naturelle ou une vue en grille 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 commandes et / ou un formatage spécifiques pour chaque enregistrement de données? (EG, liens personnalisés, éventuellement LinkButtons ou contrôles d'édition spécifiques?) Cet affichage ne s'intègre- t-il pas naturellement dans une feuille de calcul ou une vue en grille? ListView
Si vous répondez à tous les critères de ListView, mais que vous tiendriez naturellement dans une grille, vous pouvez envisager 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ête, pas de pied de page, agréable et propre.
La déclaration de l'exemple de code suivant est possible pour les 3 (ListView, DataList, Repeater)
<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%> </ItemTemplate>
<asp:ListView>
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 la modification, le groupe, l'insertion, la mise en page)
DataList (notez les paires de styles)
Répétiteur
CompositeDataBoundControl :
regardez la hiérarchie des classes suivante (et les contrôles associés).
ces contrôles hébergent d'autres contrôles asp.net dans leurs modèles pour afficher les données liées à l'utilisateur
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 plus de scénarios lorsque vous travaillez avec vos données. Ces modèles incluent LayoutTemplate, GroupTemplate, ItemSeparatorTemplate .
Le contrôle ListView ( contrairement à DataList et Repeater ) prend également implicitement 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 pour chaque ligne de votre ensemble de données et affiche ces données en fonction de votre modèle défini. Cependant , il présente les données définies dans le modèle dans diverses structures HTML. Cela inclut des options de mise en page horizontale ou verticale et vous permet également de définir la façon dont les données doivent être répétées, sous forme de flux ou de mise en page de tableau.
Le contrôle DataList n'utilise pas automatiquement un contrôle de source de données pour modifier les 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é edit, delete, update ou cancel. 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, il n'affiche pas les données sous forme d'enregistrements individuels. 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 ligne de données et de la répéter sur votre page.
Le contrôle Repeater est un modèle en lecture seule . Autrement dit, il prend uniquement en charge le ItemTemplate. Il ne prend pas implicitement en charge l'édition, l'insertion et la suppression. Vous devez 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 tirées du livre MCTS Exam 70-515 Web Applications Development with Microsoft.NET Framework 4 .
DataGrid n'est même pas mentionné dans ce livre et est remplacé par des GridViews populaires et répond bien par d'autres utilisateurs
En effet! J'ai blogué sur les différences entre les outils de données ASP.NET 4.0 . Fondamentalement, les vues en grille sont le moyen le plus puissant de présenter des informations tabulaires, tandis que les contrôles ListView sont destinés à des affichages plus complexes de données répétées. Si je donnais des conseils à un débutant ASP.NET, je leur dirais d'apprendre à fond les vues de grille et d'ignorer les autres contrôles pour commencer.
Tout dépend de la façon dont vous souhaitez mettre en page vos données.
Si vous avez besoin de contrôler la mise en page (comme les tableaux par rapport au CSS par rapport à quoi que ce soit), utilisez un Repeater ou ListView. 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é de pagination et de regroupement supplémentaire. 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 mise en page tabulaire avec de nombreuses règles de mise en page. GridView nécessite moins de code puisque vous utilisez une disposition intégrée.