Partager via


Procédure pas à pas : récupération, mise à jour, insertion et suppression de données avec les contrôles LinqDataSource et DetailsView

Mise à jour : novembre 2007

Dans cette procédure pas à pas, vous aller créer une simple table de base de données et une page Web qui utilise le contrôle LinqDataSource. La page Web permet aux utilisateurs de récupérer, mettre à jour, insérer et supprimer des données de la table de base de données. Vous allez utiliser un contrôle DetailsView pour afficher les données sur la page. Le contrôle LinqDataSource vous permet d'exécuter toutes ces opérations sans écrire d'instructions Select, Update, Insert ou Delete.

Vous utiliserez le Concepteur Objet/Relationnel pour créer une classe qui représente la table de la base de données contenant les valeurs. Le contrôle LinqDataSource agira sur cette classe générée afin de récupérer, de mettre à jour, d'insérer et de supprimer des données.

Composants requis

Pour implémenter les procédures dans votre propre environnement de développement, vous avez besoin des éléments suivants :

  • Visual Studio 2008 ou Visual Web Developer Express

  • SQL Server Express Edition installé sur votre ordinateur. Si SQL Server est installé, vous pouvez l'utiliser, mais vous devrez apporter de légères modifications à certaines des procédures.

  • avoir un site Web ASP.NET.

Création d'une table de base de données

Pour exécuter les étapes de cette procédure pas à pas, vous devez avoir une table de base de données. Si vous n'avez pas encore de table, vous pouvez en créer une en suivant les étapes de la procédure suivante. Si vous utilisez une table existante, les étapes de certaines procédures ne correspondront pas exactement à votre base de données. Toutefois, les concepts illustrés dans la procédure pas à pas seront les mêmes.

Pour créer une table de base de données

  1. Si le site Web ne possède pas déjà un dossier App_Data, dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, cliquez sur Ajouter le dossier ASP.NET, puis cliquez sur App_Data.

  2. Cliquez avec le bouton droit sur le dossier App_Data, puis cliquez sur Ajouter un nouvel élément.

  3. Sous Modèles installés, sélectionnez Base de données SQL, renommez le fichier en Reviews.mdf, puis cliquez sur Ajouter.

    Ajout d'un élément de base de données SQL nommé Reviews.mdf

  4. Dans l'Explorateur de serveurs, ouvrez le nœud Reviews.mdf puis cliquez avec le bouton droit sur le dossier Tables.

  5. Cliquez sur Ajouter une nouvelle table.

  6. Créez les colonnes suivantes dans la table :

    Nom de la colonne

    Type de données

    Propriétés

    MovieID

    int

    IsIdentity = Yes

    Non null

    Clé primaire

    Title

    nvarchar(50)

    Theater

    nvarchar(50)

    Review

    nvarchar(1000)

    Score

    int

    Non null

    Création de la table de base de données

  7. Enregistrez la table et nommez-la MovieReviews.

  8. Ajoutez plusieurs enregistrements à la table MovieReviews avec les exemples de données.

    Dans l'Explorateur de serveurs, cliquez avec le bouton droit sur la table MovieReviews, puis cliquez sur Afficher les données de la table. Vous n'avez pas à spécifier de valeur pour MovieID, car cette valeur est générée par la base de données.

Création de classes pour représenter des entités de base de données

Pour utiliser le contrôle LinqDataSource, vous travaillez avec les classes qui représentent des entités de base de données. Vous pouvez utiliser un outil de Visual Studio 2008 ou Visual Web Developer Express pour créer ces classes.

Pour créer une classe pour la table MovieReviews

  1. Si le site Web ne possède pas déjà un dossier App_Code, dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, cliquez sur Ajouter le dossier ASP.NET, puis cliquez sur App_Code.

  2. Cliquez avec le bouton droit sur le dossier App_Code, puis cliquez sur Ajouter un nouvel élément.

  3. Sous Modèles installés, sélectionnez le modèle Classes LINQ to SQL, renommez le fichier Reviews.dbml, puis cliquez sur Ajouter.

    Ajout d'un élément LINQ to SQL nommé Reviews.dbml

    Le Concepteur Objet/Relationnel s'affiche.

  4. Dans l'Explorateur de serveurs, faites glisser la table MovieReviews dans la fenêtre du Concepteur Objet/Relationnel.

    La table MovieReviews et ses colonnes sont représentées comme une entité nommée MovieReview dans la fenêtre du Concepteur O/R.

    Vérification de la nouvelle table dans le Concepteur Objet/Relationnel

  5. Enregistrez le fichier Reviews.dbml.

  6. Dans l'Explorateur de solutions, ouvrez le fichier Reviews.designer.cs ou Reviews.designer.vb.

    Remarquez qu'il a maintenant des classes pour ReviewsDataContext et MovieReview. La classe ReviewsDataContext représente la base de données et la classe MovieReview représente la table de base de données. Le constructeur sans paramètre pour la classe ReviewsDataContext lit la chaîne de connexion du fichier Web.config.

  7. Ouvrez le fichier Web.config.

    Remarquez que la chaîne de connexion a été ajoutée dans l'élément connectionStrings.

  8. Fermez le fichier de classe et le fichier Web.config.

Création et configuration d'un contrôle LinqDataSource

Maintenant que vous avez une table de base de données et des classes qui représentent des entités de base de données, vous pouvez utiliser un contrôle LinqDataSource sur une page Web ASP.NET pour gérer des données.

Pour créer et configurer un contrôle LinqDataSource

  1. Dans Visual Studio, créez une page Web ASP.NET et basculez en mode Design.

  2. À partir de l'onglet Données de la Boîte à outils, faites glisser un contrôle LinqDataSource et déposez-le dans l'élément form de la page Web.

    Vous pouvez conserver à la propriété ID la valeur LinqDataSource1.

    Ajout d'un contrôle LinqDataSource à la fenêtre du concepteur

  3. Affectez à la propriété ContextTypeName la valeur ReviewsDataContext.

  4. Affectez à la propriété TableName la valeur MovieReviews.

  5. Affectez à AutoPage la valeur true et basculez en mode Source.

    L'exemple suivant illustre le balisage déclaratif du contrôle LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    

    Remarquez que vous n'avez pas eu à spécifier de commandes de base de données pour sélectionner les données.

Ajout d'un contrôle pour afficher les données

Vous pouvez à présent ajouter un contrôle DetailsView et le lier au contrôle LinqDataSource. Le contrôle DetailsView permet aux utilisateurs de consulter des données gérées par le contrôle LinqDataSource.

Pour connecter les données LinqDataSource à un DetailsView

  1. Sous l'onglet Données de la Boîte à Outils, double-cliquez sur le contrôle DetailsView pour l'ajouter à la page.

    Vous pouvez conserver à la propriété ID la valeur DetailsView1.

  2. Affectez à la propriété DataSourceID la valeur LinqDataSource1.

  3. Affectez à la propriété DataKeyNames la valeur MovieID.

  4. Affectez à AllowPaging la valeur true.

    L'exemple suivant illustre le balisage déclaratif du contrôle DetailsView.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      >
    </asp:DetailsView>
    
  5. Enregistrez vos modifications et appuyez sur CTRL+F5 pour afficher la page dans un navigateur.

    Le contrôle DetailsView affiche les valeurs de l'enregistrement actuel de la table MovieReviews. Le contrôle DetailsView crée automatiquement les contrôles Web pour afficher chaque colonne de la table de base de données.

Activation d'utilisateurs pour mettre à jour, insérer et supprimer des données

Le contrôle LinqDataSource peut créer les commandes de mise à jour, insertion et suppression de données.

Pour activer les opérations de mise à jour, insertion et suppression

  1. Dans le contrôle LinqDataSource, affectez aux propriétés EnableUpdate, EnableInsert et EnableDelete la valeur true.

    L'exemple suivant illustre le balisage déclaratif du contrôle LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    
  2. Dans le contrôle DetailsView, affectez aux propriétés AutoGenerateEditButton, AutoGenerateInsertButton et AutoGenerateDeleteButton la valeur true.

  3. Pour restreindre les champs affichés dans le contrôle DetailsView et définir l'ordre des champs, affectez à la propriété AutoGenerateRows la valeur false.

  4. Ajoutez des champs pour les colonnes Title, Theater, Rating et Review et liez-les aux champs de données correspondants.

    L'exemple suivant illustre le balisage déclaratif du contrôle DetailsView.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      >
      <Fields>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Theater" DataField="Theater" />
        <asp:BoundField HeaderText="Number of Stars" DataField="Score" />
        <asp:BoundField HeaderText="Review" DataField="Review" />
      </Fields>
    </asp:DetailsView>
    

    La colonne MovieID est sélectionnée avec les autres colonnes de la source de données. Elle n'apparaît toutefois pas dans le contrôle DetailsView et l'utilisateur n'est pas en mesure de modifier sa valeur. La propriété MovieID doit être sélectionnée pour permettre au contrôle LinqDataSource de créer automatiquement les commandes de mise à jour, insertion et suppression de données.

    Remarquez que vous n'avez pas eu à spécifier de commandes pour ces opérations de données.

  5. Enregistrez les modifications, puis appuyez sur CTRL+F5 pour afficher la page dans un navigateur.

    Le contrôle DetailsView affiche les champs de l'enregistrement actuel de la table MovieReviews. Vous pouvez mettre à jour, insérer et supprimer des enregistrements en cliquant sur les boutons correspondants du contrôle DetailsView.

Étapes suivantes

Cette procédure pas à pas a décrit les fonctionnalités de base pour la mise à jour, l'insertion et la suppression d'enregistrements à l'aide du contrôle LinqDataSource. Pour plus d'informations sur les fonctionnalités supplémentaires du contrôle LinqDataSource, vous disposez des options suivantes :

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web LinqDataSource