IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Implémenter une classe en tant que source de données


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Implémenter une classe en tant que source de données
    Bonjour a tous,
    J'ai fait un exemple tout simple pour essayer d'implémenter tout les mécanismes (a l’intérieur de la classe) qui font qu'une classe puisse être utilisée en tant que source de données avec le même comportement qu'un DataTable (par exemple). C'est a dire que la source de données doit pouvoir notifier automatiquement les contrôles liés lors de la modification, l'ajout et la suppression a travers la liaisons de données.
    Pour la modification j'ai trouvé mais pour l'ajout ou la suppression je cherche encore.
    Par exemple lorsque j’exécute la dernière ligne du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataSourcePersonnes.Add(ThisPersonne)
    Je ne vois pas ce nouveau élément dans le contrôle DataGridView.

    Voici mon exemple de code :
    La classe Personnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Imports System.ComponentModel
     
    Public Class Personnes
        Inherits List(Of Personne)
    End Class
     
    Public Class Personne
        Implements INotifyPropertyChanged
     
        'Public Event PropertyChanged As PropertyChangedEventHandler _
        '   Implements INotifyPropertyChanged.PropertyChanged
        Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) _
            Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
     
        ' This method is called by the Set accessor of each property.
        ' The CallerMemberName attribute that is applied to the optional propertyName
        ' parameter causes the property name of the caller to be substituted as an argument.
        Private Sub NotifyPropertyChanged(<CallerMemberName()> Optional ByVal propertyName As String = Nothing)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
        End Sub
     
        Private _Nom As String
        <Description("Nom de la personne"), Category("(Identification)"), _
        DisplayName("Nom")> _
        Public Property Nom() As String
            Get
                Return _Nom
            End Get
            Set(ByVal value As String)
                _Nom = value
                NotifyPropertyChanged()
            End Set
        End Property
        Private _Prenom As String
        <Description("Prenom de la personne"), Category("(Identification)"), _
       DisplayName("Prenom")> _
        Public Property Prenom() As String
            Get
                Return _Prenom
            End Get
            Set(ByVal value As String)
                _Prenom = value
                NotifyPropertyChanged()
            End Set
        End Property
     
    End Class
    Le code du formulaire Form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Public Class Form1
        Dim MainBindingSource As New BindingSource
        Dim DataSourcePersonnes As New Personnes
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     
            AddHandler MainBindingSource.CurrentChanged, AddressOf MainBindingSource_CurrentChanged
     
            'Configuration du gestionnaire de liaison sur la source de données
            MainBindingSource.DataSource = DataSourcePersonnes
            'Liaison du gestionnaire avec les contrôles d'affichage de données
            DataGridView1.DataSource = MainBindingSource
            'MainBindingNavigator.BindingSource = MainBindingSource
        End Sub
     
        Private Sub MainBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            PropertyGrid1.SelectedObject = CType(sender, BindingSource).Current
        End Sub
     
        Private Sub btnNouveau_Click(sender As System.Object, e As System.EventArgs) Handles btnNouveau.Click
            Dim ThisPersonne As New Personne
            ThisPersonne.Nom = "Nom1"
            ThisPersonne.Prenom = "Prenom1"
            DataSourcePersonnes.Add(ThisPersonne)
        End Sub
    End Class
    Savez vous comment faire ? Merci beaucoup pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    à tester un ResetBindings

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,
    Vous devriez regarder du côté de l'interface IBindingList
    Bon dev.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Vous devriez regarder du côté de l'interface IBindingList
    Merci beaucoup ça ressemble a ce que je cherche.
    Je vais tester.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/12/2010, 15h13
  2. Sauvegarde d'une sous classe en tant que classe parente
    Par Invité dans le forum Hibernate
    Réponses: 0
    Dernier message: 06/11/2009, 13h09
  3. Réponses: 5
    Dernier message: 03/03/2008, 08h34
  4. Passage d'une fonction en tant que paramètre
    Par bagnolm dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2006, 15h58
  5. [FTP] Définir une variable en tant que constante
    Par Anduriel dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2006, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo