Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Procédure pas à pas : activation de Dynamic Data dans des contrôles liés aux données ASP.NET

.NET Framework 4

Cette procédure pas à pas indique comment intégrer des fonctionnalités Dynamic Data dans un contrôle lié aux données sans utiliser la génération de modèles automatique ou d'éléments de génération de modèles automatique partiels. Cette approche est utile si vous avez un site Web existant et que vous souhaitez ajouter un comportement dynamique à des contrôles liés aux données.

Vous pouvez utiliser un contrôle ObjectDataSource pour accéder à la base de données tout en tirant parti des fonctionnalités Dynamic Data. (Ceci au lieu d'utiliser des contrôles tels que LinqDataSource et EntityDataSource, que l'on utilise avec des sites Web Dynamic Data qui reposent sur la génération de modèles automatique.) Dans cette procédure pas à pas, vous allez créer une classe d'entreprise personnalisée avec laquelle le contrôle ObjectDataSource interagit afin d'exposer des données d'une table particulière dans l'exemple de base de données AdventureWorks.

Cette rubrique décrit les tâches suivantes :

  • Activer Dynamic Data dans un contrôle lié aux données GridView.

  • Interagir avec la base de données sous-jacente à l'aide d'un contrôle ObjectDataSource.

  • Afficher une table spécifiée dans le contrôle GridView et permettre aux utilisateurs de mettre à jour des lignes dans la table.

Cette rubrique contient les sections suivantes :

Pour exécuter l'exemple présenté dans cette rubrique, vous aurez besoin des éléments suivants :

Regardez une vidéo illustrant cette fonctionnalité : Watch Enabling Dynamic Data.

Un projet Web Visual Studio contenant du code source est disponible pour accompagner cette rubrique : Enabling Dynamic Data.

Pour commencer, vous allez créer un site Web ASP.NET qui n'est pas spécifiquement une application Web Dynamic Data.

Pour créer une application Web ASP.NET

  1. Démarrez Visual Studio.

  2. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.

    La boîte de dialogue Nouveau projet s'affiche.

  3. Sous Modèles installés, dans le volet gauche, sélectionnez Visual Basic ou Visual C#, puis sélectionnez Web.

  4. Sous Modèles installés, sélectionnez Application Web ASP.NET.

  5. Dans la zone Emplacement, entrez le nom du dossier dans lequel vous souhaitez conserver l'application Web. Par exemple, entrez le nom de dossier C:\WebApplications\EnableDynamicData.

  6. Cliquez sur OK.

L'étape suivante consiste à ajouter une base de données.

Pour ajouter la base de données à l'application Web

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le dossier App_Data, puis cliquez sur Ajouter un élément existant.

  2. Dans la boîte de dialogue Ajouter un élément existant, entrez l'emplacement de stockage du fichier de base de données AdventureWorksLT (AdventureWorksLT.mdf), puis cliquez sur Ajouter.

    Cette procédure crée une copie du fichier de base de données dans le projet. Pour plus d'informations, consultez Comment : établir une connexion avec la base de données AdventureWorksLT à l'aide d'un fichier .MDF.

Vous pouvez maintenant créer le modèle de données contenant les classes qui représentent les tables de base de données. Dynamic Data utilise ces classes pour interagir avec la base de données. Dans cette procédure pas à pas, vous utiliserez un modèle de données LINQ to SQL. Toutefois, vous pourriez utiliser à la place un modèle de données ADO.NET Entity Framework. (Vous pourriez également créer manuellement ces classes sans utiliser d'outil de modélisation des données, bien que cela ne soit pas illustré dans cette procédure pas à pas.)

Pour créer le modèle de données

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur Ajouter.

  2. Cliquez sur Nouvel élément.

  3. Sous Modèles installés, dans le volet gauche, sélectionnez Données.

  4. Dans le volet central, cliquez sur Classes LINQ to SQL.

  5. Dans la zone Nom, entrez le nom AdventureWorksLT.dbml pour le modèle de base de données.

  6. Cliquez sur Ajouter.

    Le Concepteur Objet/Relationnel s'affiche. Pour plus d'informations, consultez Concepteur Objet/Relationnel (Concepteur O/R).

  7. Dans le Concepteur Objet/Relationnel, cliquez sur le lien Explorateur de serveurs.

  8. Dans l'Explorateur de serveurs, sous Connexions de données, développez le nœud AdventureWorksLT_Data.mdf, puis le nœud Tables.

  9. Sélectionnez toutes les tables et faites-les glisser dans la fenêtre Concepteur O/R.

  10. Dans le diagramme affiché, sélectionnez toutes les colonnes de la table SalesOrdersDetail.

  11. Dans la fenêtre Propriétés associée, affectez à la propriété Vérification des mises à jour la valeur Jamais.

  12. Fermez l'Explorateur de serveurs.

  13. Enregistrez et fermez le fichier AdventureWorksLT.dbml.

    Vous avez créé le modèle de données qui représente la base de données AdventureWorksLT.

L'étape suivante consiste à créer du code qui permet à votre application d'accéder aux informations sur la base de données et de les gérer. (Dans une application Web Dynamic Data, cette logique serait générée automatiquement. Toutefois, cette procédure pas à pas vous montre comment créer ce code à utiliser avec le contrôle ObjectDataSource.) Pour cette procédure pas à pas, la logique personnalisée se compose de méthodes pour répertorier et modifier les champs de données contenus dans la table SalesOrderDetail.

Pour créer une logique personnalisée pour accéder à une table spécifiée

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur Ajouter.

  2. Cliquez sur Nouvel élément.

  3. Sous Modèles installés, dans le volet gauche, cliquez sur Code.

  4. Dans le volet central, cliquez sur Fichier de code.

  5. Dans la zone Nom, entrez ProcessingOrderDetails.vb ou ProcessingOrderDetails.cs, puis cliquez sur Ajouter.

  6. Copiez le code suivant dans la nouvelle classe, en remplaçant tout code déjà présent dans le fichier.

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Web
    
    Namespace EnableDynamicData
      Public Class ProcessingOrderDetails
        Public Function GetSalesOrderDetails() As IEnumerable( _
          Of SalesOrderDetail)
          Using db As New AdventureWorksLTDataContext()
            Return db.SalesOrderDetails.ToList()
          End Using
        End Function
    
        Public Sub Update(ByVal p As SalesOrderDetail)
          Using db As New AdventureWorksLTDataContext()
            db.SalesOrderDetails.Attach(p, True)
            db.SubmitChanges()
          End Using
        End Sub
      End Class
    End Namespace
    

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace EnableDynamicData
    {
      public class ProcessingOrderDetails
      {
        public IEnumerable<SalesOrderDetail> GetSalesOrderDetails()
        {
          using (AdventureWorksLTDataContext db = 
             new AdventureWorksLTDataContext())
          {
            return db.SalesOrderDetails.ToList();
           }
        }
    
        public void Update(SalesOrderDetail p)
        {
          using (AdventureWorksLTDataContext db = 
            new AdventureWorksLTDataContext())
            {
              db.SalesOrderDetails.Attach(p, true);
              db.SubmitChanges();
            }
        }
      }
    }
    

    La classe contient les méthodes suivantes :

    • GetSalesOrderDetails. Cette méthode retourne les lignes de données de la table SalesOrderDetail. Cette méthode instancie l'objet de contexte de base de données, puis utilise la classe SalesOrderDetails pour obtenir la collection de lignes.

    • Update. Cette méthode modifie une valeur de colonne dans la table SalesOrderDetail. La méthode instancie l'objet de contexte de base de données, puis soumet les modifications apportées dans la table SalesOrderDetail à la base de données.

  7. Enregistrez et fermez le fichier.

  8. Dans le menu Générer, cliquez sur Générer EnableDynamicData (ou sur le nom utilisé pour l'application Web) pour générer la solution.

    Cela rend l'objet métier disponible pour la procédure suivante.

Cette section indique comment configurer un contrôle lié aux données de sorte qu'il puisse utiliser des fonctionnalités telles que les modèles de page et la validation déduites du schéma de base de données ou de métadonnées personnalisées. Votre application peut utiliser ces fonctionnalités simplement en activant Dynamic Data. Le contrôle est utilisé pour afficher et modifier les valeurs contenues dans la table SalesOrderDetail.

La première étape consiste à configurer un contrôle de source de données pour interagir avec la base de données.

Pour ajouter une page Web et un contrôle de source de données

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur Ajouter.

  2. Cliquez sur Nouvel élément.

  3. Sous Modèles installés, dans le volet gauche, cliquez sur Web.

  4. Dans le volet central, cliquez sur Web Form.

  5. Dans la zone Nom entrez EnableDynamicData.aspx, puis cliquez sur Ajouter.

  6. Basculez en mode Design.

  7. À partir du groupe Données de la Boîte à outils, ajoutez un contrôle ObjectDataSource à la page.

  8. Dans le menu Tâches ObjectDataSource, cliquez sur Configurer la source de données.

    La boîte de dialogue Choisir un objet métier s'affiche.

  9. Dans la liste Choisissez votre objet métier, sélectionnez la classe ProcessingOrderDetails que vous avez créée lors de la procédure précédente.

  10. Cliquez sur Suivant.

    La boîte de dialogue Définir les méthodes de données s'affiche.

  11. Dans la liste Choisissez une méthode dans le volet à onglets Sélectionner, sélectionnez la méthode GetSalesOrderDetails.

  12. Cliquez sur l'onglet Mettre à jour.

  13. Dans la liste Choisissez une méthode dans le volet à onglets Mettre à jour, sélectionnez la méthode Update.

  14. Cliquez sur Terminer.

    Vous avez configuré le contrôle de source de données de façon à utiliser la classe ProcessingOrderDetails qui interagit avec la base de données via le modèle de données.

L'étape suivante consiste à créer un contrôle lié aux données et à activer Dynamic Data pour ce contrôle. Le contrôle peut ensuite reposer sur les fonctionnalités Dynamic Data pour créer l'interface utilisateur pour l'affichage et la modification des données.

Pour configurer le contrôle lié aux données de façon à utiliser les fonctionnalités Dynamic Data

  1. À partir du groupe Données de la Boîte à outils, ajoutez un contrôle GridView à la page.

  2. Dans le menu Tâches GridView, dans la liste Choisir la source de données, sélectionnez ObjectDataSource1.

    Il s'agit de l'ID du contrôle ObjectDataSource que vous avez créé lors d'une procédure précédente.

  3. Activez la pagination, la modification et la sélection.

  4. Basculez en mode Source.

  5. Dans le contrôle GridView, dans l'élément Columns, supprimez tous les contrôles DataBoundField qui ont été générés automatiquement. (Conservez l'élément CommandField.)

  6. Activez la génération automatique de colonnes en affectant à l'attribut AutoGenerateColumns la valeur true, comme indiqué dans l'exemple suivant :

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
      DataSourceID="ObjectDataSource1" AutoGenerateColumns="True" >
        <Columns>
          <asp:CommandField 
            ShowEditButton="True" ShowSelectButton="True" /> 
        </Columns>
    </asp:GridView>
    
  7. Enregistrez et fermez le fichier EnableDynamicData.aspx.

  8. Ouvrez le fichier de classe EnableDynamicData.aspx.vb ou EnableDynamicData.aspx.cs.

  9. Ajoutez la référence aux espaces de noms System.Web.DynamicData comme indiqué dans l'exemple suivant :

    Imports System.Web.DynamicData
    

    using System.Web.DynamicData
    
  10. Dans la méthode Page_Init, activez Dynamic Data pour le contrôle GridView comme indiqué dans l'exemple suivant :

    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        GridView1.EnableDynamicData(GetType(SalesOrderDetail))
    End Sub
    

    protected void Page_Init()
      {
        GridView1.EnableDynamicData(typeof(SalesOrderDetail));
      }
    
  11. Enregistrez et fermez le fichier.

  12. Régénérez l'application.

Cette section indique comment tester si les fonctionnalités Dynamic Data ont été intégrées au contrôle GridView en vérifiant les éléments suivants :

  • La logique métier personnalisée interagit correctement avec la base de données.

  • La validation Dynamic Data est exécutée sur les modifications apportées aux champs de données.

  • Dynamic Data génère des messages d'erreur basés sur les informations qu'il déduit des métadonnées de schéma de base de données.

Pour tester les fonctionnalités Dynamic Data

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la page EnableDynamicData.aspx, puis cliquez sur Afficher dans le navigateur.

    Le navigateur affiche une page qui montre la table SalesOrderDetail.

  2. Vérifiez que les champs de données SalesOrderDetails corrects sont affichés.

  3. Sur une ligne quelconque, cliquez sur Modifier et, pour la colonne UnitPrice, entrez une valeur non numérique.

  4. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data affiche un message d'erreur qui vous signale que le champ UnitPrice doit être une valeur décimale. Remarquez que l'interface utilisateur utilisée pour la modification est basée sur le modèle Dynamic Data par défaut.

  5. Sur la même ligne, cliquez sur Annuler.

  6. Sur une ligne quelconque, cliquez sur Modifier, puis modifiez la colonne OrderQty en une valeur inférieure ou égale à la valeur entière maximale (32767) autorisée par la base de données.

  7. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data met à jour la base de données. Étant donné que vous avez entré une valeur valide, la validation Dynamic Data des données réussit.

  8. Sur une ligne quelconque, cliquez sur Modifier, puis modifiez la colonne OrderQty en une valeur supérieure à la valeur entière maximale (32767) autorisée par la base de données.

  9. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data affiche un message d'erreur qui signale que vous avez entré une valeur non valide.

  10. Sur la même ligne, cliquez sur Annuler.

    Cela montre que les fonctionnalités Dynamic Data ont été intégrées au contrôle GridView et qu'il utilise les informations de métadonnées obtenues à partir du schéma de base de données. La validation fait partie des fonctionnalités que votre application a héritée de Dynamic Data.

  11. Fermez le navigateur.

Dans cette section de la procédure pas à pas, vous allez ajouter des informations personnalisées (métadonnées) au schéma de base de données. Dynamic Data utilise ces métadonnées lors du traitement des champs de données. Par exemple, vous pouvez définir une plage de valeurs pour un champ de données différent de celui autorisé par la base de données. Dans cette procédure pas à pas, vous allez ajouter des informations personnalisées de façon à exiger une valeur UnitPrice (qui n'est pas un champ obligatoire dans la base de données) et à définir une plage pour la valeur OrderQty.

Pour fournir des métadonnées personnalisées

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur Ajouter une référence.

    La boîte de dialogue Ajouter une référence s'affiche.

  2. Cliquez sur l'onglet .NET.

  3. Dans la liste, sélectionnez System.ComponentModel.DataAnnotations.

  4. Cliquez sur OK.

  5. Ouvrez le fichier EnableDynamicData.aspx.vb ou EnableDynamicData.aspx.cs.

  6. Copiez le code suivant dans ce fichier, en remplaçant tout code déjà présent.

    Imports System.ComponentModel.DataAnnotations
    
    Namespace EnableDynamicData
      <MetadataType(GetType(SalesOrderDetailMetadata))> _
      Partial Public Class SalesOrderDetail
        Public Class SalesOrderDetailMetadata
          Private privateUnitPrice As String
          <Required()> _
          Public Property UnitPrice() As String
            Get
              Return privateUnitPrice
            End Get
            Set(ByVal value As String)
              privateUnitPrice = value
            End Set
          End Property
    
          Private privateOrderQty As Decimal
            <Range(0, 100)> _
            Public Property OrderQty() As Decimal
              Get
                Return privateOrderQty
              End Get
              Set(ByVal value As Decimal)
                privateOrderQty = value
              End Set
            End Property
        End Class
      End Class
    
    End Namespace
    

    using System.ComponentModel.DataAnnotations;
    
    namespace EnableDynamicData
    {
      [MetadataType(typeof(SalesOrderDetailMetadata))]
      public partial class SalesOrderDetail
      {
        public class SalesOrderDetailMetadata
        {
          [Required]
          public string UnitPrice { get; set; }
    
          [Range(0, 100)]
          public decimal OrderQty { get; set; }
    
        }
      }
    
         
    }
    

    Ce code crée deux classes : une classe partielle nommée SalesOrderDetail et une classe à l'intérieur de celle nommée SalesOrderDetailMetadata.

    Ces classes étendent le modèle de données et vous permettent d'effectuer les tâches suivantes :

    • Ajoutez des métadonnées au champ de données UnitPrice pour interdire les valeurs Null. (La base de données AdventureWorks autorise les valeurs Null pour le champ de données UnitPrice.) Dynamic Data renvoie un message d'erreur lorsque l'utilisateur essaie d'entrer une valeur Null.

    • Ajoutez des métadonnées au champ de données OrderQty pour définir une plage autorisée. La base de données AdventureWorks n'a pas de limites de plage pour le champ de données OrderQty. Dynamic Data renvoie un message d'erreur lorsque l'utilisateur essaie d'entrer une valeur située en dehors de la plage autorisée.

    L'utilisation de classes partielles de cette façon offre un moyen flexible de modifier le comportement du modèle de données sans modifier directement le modèle de données.

  7. Enregistrez et fermez le fichier.

Cette section indique comment tester si Dynamic Data exécute la validation sur la base des métadonnées que vous avez fournies. Vous allez tester si :

  • Dynamic Data exécute la validation correcte des modifications qui ont été apportées aux champs de données sur la base des métadonnées personnalisées ;

  • Dynamic Data génère des messages d'erreur basés sur les informations qu'il déduit des informations de métadonnées personnalisées.

Pour tester la validation Dynamic Data personnalisée

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la page EnableDynamicData.aspx, puis sélectionnez Afficher dans le navigateur.

    Le navigateur affiche une page qui montre la table SalesOrderDetails.

  2. Sur une ligne quelconque, cliquez sur Modifier et effacez la valeur de colonne UnitPrice.

  3. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data affiche un message d'erreur qui vous signale que le champ UnitPrice est obligatoire. Cela montre que la validation Dynamic Data a été intégrée au contrôle GridView et qu'il utilise les informations de métadonnées personnalisées que vous avez fournies.

  4. Sur la même ligne, cliquez sur Annuler.

  5. Sur une ligne quelconque, cliquez sur Modifier, puis modifiez la colonne OrderQty en une valeur située dans la plage autorisée, telle que 25.

  6. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data met à jour la base de données. Étant donné que vous avez entré une valeur valide, la validation des données réussit.

  7. Sur ligne quelconque, cliquez sur Modifier et, pour la colonne OrderQty, entrez une valeur située en dehors de la plage autorisée, telle que 250.

  8. Sur la même ligne, cliquez sur Mettre à jour.

    Dynamic Data affiche un message d'erreur qui signale que la valeur du champ de données doit être comprise entre 0 et 100. Cela montre que la validation Dynamic Data a été intégrée au contrôle GridView à l'aide des informations de métadonnées personnalisées.

  9. Sur la même ligne, cliquez sur Annuler.

Cette procédure pas à pas a illustré les principes de base de l'ajout de fonctionnalités Dynamic Data à des contrôles liés aux données ASP.NET. Vous pouvez essayer des fonctionnalités supplémentaires. Les suggestions supplémentaires d'exploration incluent notamment :

Pour des informations générales, vous pouvez :

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ