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 :

Valider un saisie dans un champ d'une DataGridView par la touche ENTREE


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut Valider un saisie dans un champ d'une DataGridView par la touche ENTREE
    Bonjour,
    J'ai créé une DATAGRIDVEW sous VB2010 Express avec des champs que l'on peut remplir après un click.
    Pour valider cette saisie lorsque je clique sur une ligne précédente ou suivante ma BDD Sql est bien Updatée et tout est parfait.
    Mais lorsque je n'ai qu'une ligne dans ma DATAGRIDVIEW je ne peux évidemment pas valider en cliquant sur une autre ligne, j'appuie donc sur la touche ENTREE de mon PC, la DATAGRIDVIEW montre bien la modification du champ mais ma BDD Sql n'est pas Updatée. J'ai essayé plein de choses sans succès, à défaut de clic sur une autre ligne la BDD Sql n'est pas Updatée.
    D'où ma question : y-a-il une méthode permettant de valider la modification d'un champ d'une DATAGRIDVIEW par la touche ENTREE ou autre action lorsqu'il n'y a qu'une seule ligne ?
    Merci d'avance

    Nom : DGV.jpg
Affichages : 455
Taille : 24,4 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub DataGridViewRdv_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewRdv.CellEndEdit
            If AdaptateurAgenda IsNot Nothing Then
                AdaptateurAgenda.Update(MonDataSet, "Agenda")
            End If
        End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Bonjour,

    Le problème est simple.
    La valeur de la cellule n'est pas validée tant qu'on ne sort pas du champ.
    Il y a 2 solutions possibles :
    • Ajouter un bouton 'Enregistrer' sur le formulaire, et ne valider la BD que lors de l'appui sur ce bouton.
    • Utiliser l'évènement CurrentCellDirtyStateChanged pour forcer la fin d'édition du champ.

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut
    Bonjour et merci pour ta réponse
    Pour le bouton Enregistrer j'y ai bien pensé et même essayé mais je souhaitais l'éviter.
    Pour CurrentCellDirtyStateChanged j'ai tenté aussi mais que faut-il y mettre pour forcer la fin d'édition du champ ? Ce que j'ai essayé n'a pas été concluant ...

  4. #4
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub maDataGridView_EndEditMode(sender As System.Object, e As EventArgs) Handles maDataGridView.CurrentCellDirtyStateChanged
     
            ' Si la cellule courante attend sa validation, on valide l'édition
            If maDataGridView.IsCurrentCellDirty Then
                maDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
     
        End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 140
    Par défaut
    Voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
        Private Sub DataGridViewRdv_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewRdv.CellEndEdit
            If AdaptateurAgenda IsNot Nothing Then
                AdaptateurAgenda.Update(MonDataSet, "Agenda")
            End If
        End Sub
     
        Private Sub DataGridViewRdv__EndEditMode(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridViewRdv.CurrentCellDirtyStateChanged
            ' Si la cellule courante attend sa validation, on valide l'édition
            If DataGridViewRdv.IsCurrentCellDirty Then
                DataGridViewRdv.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
        End Sub
    Dans le cas d'une seule ligne l'update de la BDD ne se fait pas quelque soit la méthode employée pour valider (ENTREE, clic sur une cell adjacente ...)
    Par contre si ensuite je reclique sur la même cell pour l'éditer sans en changer le contenu et que je clique sur une cell adjacente pour valider l'Update fonctionne. Pas simple ...

  6. #6
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Attention, l'évènement CurrentCellDirtyStateChanged va se déclencher dès que tu touches à quoi que ce soit dans la cellule.
    Comme tu valides aussitôt, tu arrêtes l'édition et tu enregistres le contenu qui n'a pas encore changé en fait...

    J'avais simplifié le code. Quand on gère cet évènement il faut interagir avec l'évènement CellValueChanged en général.
    Personnellement je l'utilise pour faire du filtrage de saisie (champs purement numériques ou alphanumériques).

    Maintenant, je pense que j'étais fatigué quand j'ai répondu hier soir, la solution la plus simple est certainement de gérer çà dans l'évènement KeyPress.
    Quand la touche entrée est pressée ET qu'une cellule valide a été touchée (DataGridViewRdv.IsCurrentCellDirty...) tu valides l'édition (le CommitEdit) et la mise à jour se fera.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2014, 16h18
  2. [E-07] Valider une saisie dans un champ
    Par eliot.raymond dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 19/03/2009, 15h51
  3. [SQL] Compteur de saisies dans des champs d'une BDD
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/02/2007, 14h54
  4. brider une saisie dans le champ d'un formualire
    Par zeloutre dans le forum Access
    Réponses: 5
    Dernier message: 19/10/2006, 16h13
  5. Modification d'une combo suite à la saisi dans un champ texte
    Par GabriHell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/05/2006, 18h48

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