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

Windows Forms Discussion :

Comment mettre à jour la source d'un DataGridView à partir d'une cellule en édition ?


Sujet :

Windows Forms

  1. #1
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut Comment mettre à jour la source d'un DataGridView à partir d'une cellule en édition ?
    Bonjour,

    J'ai un DataGridView (DGV) lié à une liste d'objets (LO) via un BindingSource (BS).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BS.DataSource = LO;
    DGV.DataSource = BS;
    Je souhaiterais que lorsque je suis en édition dans une cellule du DGV, la LO soit mise à jour automatiquement et immédiatement.
    Actuellement, c'est le cas, mais seulement lorsque je quitte la cellule.

    En fait, c'est le même principe avec d'autres contrôles où je peux modifier le mode de mise à jour du DataSource en mettant OnPropertyChanged au lieu de OnValidation (voir image jointe).
    Eh bien là, j'ai beau chercher, je ne trouve pas cette option de liaison dans les propriétés de colonne du DGV, ni celles du DGV et je n'ai rien trouvé sur Internet.
    Mes mots clés sont : datagridview data source update mode edit

    Auriez-vous des pistes ou des solutions à me proposer ? Merci d'avance.

    PS : c'est un peu le même comportement qui est recherché ici : http://www.developpez.net/forums/d59...ell-mise-jour/
    mais je ne peux pas utiliser l'évènement CellContentClick car il pourrait aussi s'agir d'un ajout de caractère. Il me faudrait donc utiliser aussi l'évènement OnKeyPress... Bref, cette solution me parait beaucoup trop fastidieuse pour un simple détail.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il faut gérer l'évènement CurrentCellDirtyStateChanged. Avec un nom pareil, c'était pourtant évident non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
    Comme ça la modification est immédiatement commitée dans la source de données. Par contre, ça marche avec un DataSet mais je sais pas ce que ça donne avec une liste d'objets

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Super ! Cela me convient parfaitement. Ca fonctionne aussi avec mon objet lié.
    Du coup, comme ce dernier implémente INotifyPropertyChanged, je minimise l'utilisation des évènements du DataGridView. Ce qui me permet de localiser les évènements métiers aux objets métiers et non à l'UI !

    Merci tomlev ! Réponse courte et valable, comme d'habitude !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datagridview : mettre à jour la source de données
    Par Kropernic dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/12/2011, 08h45
  2. [Binding] Comment mettre à jour la source à la demande ?
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 02/09/2008, 10h07
  3. [Rave Report] Comment mettre à jour le produit
    Par Leesox dans le forum Rave
    Réponses: 2
    Dernier message: 11/04/2005, 21h00
  4. Comment mettre à jour un exécutable ?
    Par rvzip64 dans le forum Langage
    Réponses: 10
    Dernier message: 09/12/2004, 18h43
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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