Partager via


Interfaces participant à la liaison de données

Avec ADO.NET, vous pouvez créer de nombreuses structures de données différentes pour répondre aux besoins de liaison de votre application et aux données avec lesquelles vous travaillez. Vous souhaiterez peut-être créer vos propres classes qui fourniront ou utiliseront des données dans les Windows Forms. Ces objets peuvent offrir différents niveaux de fonctionnalités et de complexité, de la liaison de données basique à la fourniture d’une prise en charge au moment du design, en passant par la vérification des erreurs, la notification des modifications ou même la prise en charge de la restauration structurée des modifications apportées aux données elles-mêmes.

Utilisateurs d’interfaces de liaison de données

Les sections suivantes décrivent deux groupes d’objets d’interface. Le premier groupe répertorie les interfaces implémentées sur les sources de données par les auteurs de sources de données. Ces interfaces sont conçues pour être utilisées par les consommateurs de sources de données, qui sont dans la plupart des cas des contrôles ou des composants Windows Forms. Le second groupe répertorie les interfaces conçues pour être utilisées par les auteurs de composants. Les auteurs de composants utilisent ces interfaces lorsqu’ils créent un composant prenant en charge la liaison de données pour une utilisation par le moteur de liaison de données Windows Forms. Vous pouvez implémenter ces interfaces dans les classes associées à votre formulaire pour activer la liaison de données. Chaque cas présente une classe qui implémente une interface permettant l’interaction avec les données. Les outils d’expérience de conception de données (RAD) de Visual Studio tirent déjà parti de cette fonctionnalité.

Interfaces pour implémentation par des auteurs de sources de données

Les interfaces suivantes sont conçues pour être utilisées par les contrôles Windows Forms :

  • Interface IList

    Une classe qui implémente l’interface IList peut être un Array, ArrayListou CollectionBase. Il s’agit de listes indexées d’éléments de type Object. Ces listes doivent contenir des types homogènes, car le premier élément de l’index détermine le type. IList serait disponible uniquement pour la liaison au moment de l’exécution.

    Remarque

    Si vous souhaitez créer une liste d’objets métier pour la liaison avec Windows Forms, vous devez envisager d’utiliser le BindingList<T>fichier . Il BindingList<T> s’agit d’une classe extensible qui implémente les interfaces principales requises pour la liaison de données Windows Forms bidirectionnelle.

  • Interface IBindingList

    Une classe qui implémente l’interface IBindingList fournit un niveau beaucoup plus élevé de fonctionnalités de liaison de données. Cette implémentation fournit des fonctionnalités de tri de base et une notification des modifications, à la fois lorsque la liste des éléments change (par exemple, le champ Adresse du troisième élément d’une liste de clients change) et lorsque la liste elle-même change (par exemple, augmentation ou diminution du nombre d’éléments de la liste). La notification des modifications est importante si vous prévoyez de lier plusieurs contrôles aux mêmes données et si vous souhaitez que les modifications apportées aux données d’un contrôle se propagent à d’autres contrôles liés.

    Remarque

    La notification de modification est activée pour l’interface via la IBindingListSupportsChangeNotification propriété qui, lorsque true, déclenche un ListChanged événement, indiquant la liste modifiée ou un élément de la liste modifiée.

    Le type de modification est décrit par la ListChangedType propriété du ListChangedEventArgs paramètre. Par conséquent, à chaque mise à jour du modèle de données, toutes les vues dépendantes, comme les autres contrôles liés à la même source de données, seront également mises à jour. Toutefois, les objets contenus dans la liste devront notifier la liste lorsqu’ils changent afin que la liste puisse déclencher l’événement ListChanged .

    Remarque

    Fournit BindingList<T> une implémentation générique de l’interface IBindingList .

  • Interface IBindingListView

    Une classe qui implémente l’interface IBindingListView fournit toutes les fonctionnalités d’une implémentation, IBindingListainsi que le filtrage et les fonctionnalités de tri avancées. Cette implémentation offre un filtrage basé sur les chaînes ainsi que le tri multicolonne avec des paires direction-descripteur de propriété.

  • Interface IEditableObject

    Une classe qui implémente l’interface IEditableObject permet à un objet de contrôler le moment où les modifications apportées à cet objet sont rendues permanentes. Cette implémentation vous offre les méthodes et CancelEdit les BeginEditEndEditméthodes qui vous permettent de restaurer les modifications apportées à l’objet. Voici une brève explication du fonctionnement des BeginEditEndEditméthodes et CancelEdit du fonctionnement des méthodes et de leur fonctionnement en collaboration avec les autres pour permettre une restauration possible des modifications apportées aux données :

    • La BeginEdit méthode signale le début d’une modification sur un objet. Un objet qui implémente cette interface doit stocker les mises à jour après l’appel de méthode BeginEdit de telle sorte que les mises à jour puissent être dissoûtées carte si la CancelEdit méthode est appelée. Dans windows Forms de liaison de données, vous pouvez appeler BeginEdit plusieurs fois dans l’étendue d’une transaction d’édition unique (par exemple, , BeginEdit, BeginEditEndEdit). Les implémentations de IEditableObject doivent suivre si BeginEdit elles ont déjà été appelées et ignorer les appels suivants à BeginEdit. Étant donné que cette méthode peut être appelée plusieurs fois, il est important que les appels suivants soient non destructeurs ; autrement dit, les appels suivants BeginEdit ne peuvent pas détruire les mises à jour qui ont été apportées ou modifier les données enregistrées lors du premier BeginEdit appel.

    • La EndEdit méthode envoie (push) toutes les modifications depuis BeginEdit qu’elle a été appelée dans l’objet sous-jacent, si l’objet est actuellement en mode édition.

    • La CancelEdit méthode dis carte toute modification apportée à l’objet.

    Pour plus d’informations sur le fonctionnement de la BeginEditbase de données, EndEditCancelEdit consultez Enregistrer les données dans la base de données.

    Cette notion transactionnelle de fonctionnalité de données est utilisée par le DataGridView contrôle.

  • Interface ICancelAddNew

    Une classe qui implémente l’interface ICancelAddNew implémente généralement l’interface IBindingList et vous permet de restaurer un ajout effectué à la source de données avec la AddNew méthode. Si votre source de données implémente l’interface IBindingList , vous devez également l’implémenter ICancelAddNew .

  • Interface IDataErrorInfo

    Une classe qui implémente l’interface IDataErrorInfo permet aux objets d’offrir des informations d’erreur personnalisées aux contrôles liés :

    • La Error propriété retourne le texte du message d’erreur général (par exemple, « Une erreur s’est produite »).

    • La Item[] propriété retourne une chaîne avec le message d’erreur spécifique de la colonne (par exemple, « La valeur de la State colonne n’est pas valide »).

  • Interface IEnumerable

    Une classe qui implémente l’interface IEnumerable est généralement consommée par ASP.NET. La prise en charge de Windows Forms pour cette interface est disponible uniquement via le BindingSource composant.

    Remarque

    Le BindingSource composant copie tous les IEnumerable éléments dans une liste distincte à des fins de liaison.

  • Interface ITypedList

    Une classe de collections qui implémente l’interface ITypedList permet de contrôler l’ordre et l’ensemble de propriétés exposées au contrôle lié.

    Remarque

    Lorsque vous implémentez la GetItemProperties méthode et que le PropertyDescriptor tableau n’est pas null, la dernière entrée du tableau est le descripteur de propriété qui décrit la propriété de liste qui est une autre liste d’éléments.

  • Interface ICustomTypeDescriptor

    Une classe qui implémente l’interface ICustomTypeDescriptor fournit des informations dynamiques sur elle-même. Cette interface est similaire à ITypedList celle utilisée pour les objets plutôt que pour les listes. Cette interface est utilisée pour DataRowView projeter le schéma des lignes sous-jacentes. Une implémentation simple est ICustomTypeDescriptor fournie par la CustomTypeDescriptor classe.

    Remarque

    Pour prendre en charge la liaison au moment du design aux types qui implémentent ICustomTypeDescriptor, le type doit également implémenter IComponent et exister en tant qu’instance sur le formulaire.

  • Interface IListSource

    Une classe qui implémente l’interface IListSource active la liaison basée sur la liste sur des objets non-list. La GetList méthode d’utilisation IListSource est utilisée pour renvoyer une liste pouvant être liée à partir d’un objet qui n’hérite pas de IList. IListSource est utilisé par la DataSet classe.

  • Interface IRaiseItemChangedEvents

    Une classe qui implémente l’interface IRaiseItemChangedEvents est une liste pouvant être liée qui implémente également l’interface IBindingList . Cette interface est utilisée pour indiquer si votre type déclenche ListChanged des événements de type ItemChanged via sa RaisesItemChangedEvents propriété.

    Remarque

    Vous devez implémenter si IRaiseItemChangedEvents votre source de données fournit la propriété pour répertorier la conversion d’événements décrite précédemment et interagir avec le BindingSource composant. Dans le cas contraire, la BindingSource propriété effectue également la conversion d’événements de liste, ce qui entraîne des performances plus lentes.

  • Interface ISupportInitialize

    Un composant qui implémente l’interface ISupportInitialize tire parti des optimisations par lots pour définir des propriétés et initialiser des propriétés dépendantes. Contient ISupportInitialize deux méthodes :

    • BeginInit signale que l’initialisation de l’objet démarre.

    • EndInit signale que l’initialisation de l’objet se termine.

  • Interface ISupportInitializeNotification

    Un composant qui implémente l’interface ISupportInitializeNotification implémente également l’interface ISupportInitialize . Cette interface vous permet d’informer d’autres ISupportInitialize composants que l’initialisation est terminée. L’interface ISupportInitializeNotification contient deux membres :

  • Interface INotifyPropertyChanged

    Une classe qui implémente cette interface est un type qui déclenche un événement lorsqu’une de ses valeurs de propriété change. Cette interface est conçue pour remplacer le modèle d’événement de modification pour chaque propriété d’un contrôle. Lorsqu’il est utilisé dans un BindingList<T>objet métier, il doit implémenter l’interface INotifyPropertyChanged et bindingList'1 convertit PropertyChanged les événements en ListChanged événements de type ItemChanged.

    Remarque

    Pour que la notification de modification se produise dans une liaison entre un client lié et une source de données, votre type de source de données lié doit implémenter l’interface INotifyPropertyChanged (par défaut) ou vous pouvez fournir des événements propertyNameChanged pour le type lié, mais vous ne devez pas effectuer les deux.

Interfaces pour implémentation par des auteurs de composants

Les interfaces suivantes sont conçues pour une utilisation par le moteur de liaison de données Windows Forms :

Voir aussi