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

Accès aux données Discussion :

[2.0] BindingSource : Existe-il un événement signalant une modification des données ?


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut [2.0] BindingSource : Existe-il un événement signalant une modification des données ?
    Bonjour à tous.
    Je cherche un moyen d'être informé lors d'un changement apporté au DataRowView référencé par la propriété BindingSource.Current.
    Les événements CurrentItemChanged et CurrentChanged ne se sont pas déclenchés lorsque les données du DataRowView changent, mais uniquement au moment où la référence sur objet BindingSource.Current change.

    Un tel événément me permettrait de savoir qu'il a eu un changement, avant l'appel de BindingSource.EndEdit() ( méthode provoquant la mise à jour du DataSet ).

    Merci pour votre aide

  2. #2
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Je cherche un moyen d'être informé lors d'un changement apporté au DataRowView référencé par la propriété BindingSource.Current.
    Qu'appelles-tu changement exactement ? modification ?

    Tu as un évenement sur la DataView qui est RowChanged qui se déclenche quand une valeur de la ligne est modifiée.

    Tu peux aussi créer un test avant de lancer les EndEdit
    (C'est une idée, je ne l'ai jamais utilisé)

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim RowOrig As System.data.DataRow
    Dim RowProp As System.data.DataRow
    Dim monDataRowView As DataRowView
     
    Bln_Modifier = False
     
    For i = 0 To monDataRowView.Row.ItemArray.Length - 1
        RowOrig = monDataRowView.Row.Item(0, DataRowVersion.Original)
        RowProp = monDataRowView.Row.Item(0, DataRowVersion.Proposed)
        Bln_Modifier = Bln_modifier Or VerifierRowAModifier(RowOrig, RowProp)
    Next

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut
    Salut Kelpan et merci pour ta réponse.

    Tu peux aussi créer un test avant de lancer les EndEdit
    En fait j'ai besoin d'être informé dès qu'une modification est apportée au DataRowView, et non pas d'aller vérifier avant l'appel de BindingSource.EndEdit().

    Tu as un évenement sur la DataView qui est RowChanged qui se déclenche quand une valeur de la ligne est modifiée.
    En fait c'est DataTable qui propose cet événement. On y accède via DataRowView.Row.Table.RowChanged. Le problème c'est que le DataTable en question est celui du DataSet sous jacent, et, par conséquent, cet événement est déclenché à l'appel de BindingSource.EndEdit().

  4. #4
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Désolé de ne pas pourvoir t'aider plus que ça, c'est un domaine que je ne maitrise pas trop.

    Par contre, la méthode Row_Changing ne peut-elle pas t'aider ?

    Code vb.net : 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
     
    Private Sub Row_Changing(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
     
        Dim RowOrig As System.data.DataRow
        Dim RowProp As System.data.DataRow
     
        Bln_Modifier = False
     
        For i = 0 To e.Row.ItemArray.Length - 1
             RowOrig = e.Row.Item(0, DataRowVersion.Original)
             RowProp = e.Row.Item(0, DataRowVersion.Proposed)
             Bln_Modifier = Bln_modifier Or VerifierRowAModifier(RowOrig, RowProp)
        Next
     
        If Not bln_modifier Then e.Row.RejectChanges()
    End Sub

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut
    Merci encore pour ton aide Kelpan.

    RowChanging (comme RowChanged) est un événement déclenché par DataTable. Comme je le disais dans le post précédent, le DataTable en question est celui du DataSet et l'événement ne sera pas déclenché avant l'appel de BindingSource.EndEdit().

  6. #6
    Membre émérite
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Par défaut
    Ca m'étonne que CurrentItemChanged ne soit pas déclenché !
    Es-tu sûr que le changement que tu attends est bien un changement qui a été commité au niveau du DataRow sous jacent ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/03/2017, 16h31
  2. Réponses: 2
    Dernier message: 13/07/2012, 13h08
  3. [PHP-JS] Gérer évènement dans une base de données
    Par drogba72 dans le forum Langage
    Réponses: 21
    Dernier message: 25/02/2009, 15h31
  4. Tester l'existence d'un index dans une base de données
    Par QuickSave dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/01/2007, 13h41

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