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 :

[C#] Comment récupérer l'état d'une case à cocher dans un DataGridView ?


Sujet :

Windows Forms

  1. #1
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut [C#] Comment récupérer l'état d'une case à cocher dans un DataGridView ?
    Bonjour,

    Je suis confronté au problème suivant. J'ai un DataGridView (lié à une base de données) avec une DataGridViewCheckBoxColumn, des colonnes texte classiques et pour finir un DataGridViewButtonColumn.

    En fonction de l'état de la case à cocher d'une ligne, le bouton exécute le code associé ou non. Sur l'événement CellClick, j'utilise le code suivant
    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
    private void dgDomaine_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        DataGridViewCell cell = this.dgDomaine[e.ColumnIndex, e.RowIndex];
     
        if (cell is DataGridViewButtonCell)
        {
            if (!cell.ReadOnly)
            {
                 ...
            }
        }
        else
        {
            if (cell is DataGridViewCheckBoxCell)
            {
                bool checkedCell = (bool) cell.Value;
                // à ce stade, checkedCell vaut toujours true 
                // que la case soit cochée ou décochée
                row.Cells["button"].ReadOnly = !checkedCell;
            }
        }            
    }
    Je ne comprends pas pourquoi la valeur associée à la cellule case à cocher me renvoie toujours true, car après tout, une fois que je "valide", la base de données qui est derrière est bien mise à jour (le champ associé à la case à cocher voit bien sa valeur changer).

    Si quelqu'un à déjà rencontré ce problème, qu'il me fasse part de son expérience

    Merci.
    Pas de questions techniques par MP

  2. #2
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    La valeur du checkBox est mise à jour après l'événement CellClick().

    Dans mon code j'avais moi-même géré les états des CheckBox de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((bool)cell.Value == true)
       cell.Value = false;
    else
       cell.Value = true;
    Comme ça, je suis sûr du comportement de mon contrôle.

    A++
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Mast3rMind
    La valeur du checkBox est mise à jour après l'événement CellClick().
    A ce moment, quand je cliques une seconde fois, la valeur devrait avoir changée, ce qui n'est pas le cas.

    Tu utilises ce bout de code à quel niveau (événement, ...) ?
    Pas de questions techniques par MP

  4. #4
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    J'ai fait ce bout de code dans le même événement que toi, soit CellClick().

    Aussi, j'ai fait des tests dans le débuggeur, et l'état d'une DataGridViewCheckBoxColumn n'est pas mis à jour dans l'événement CellClick(), donc il semblerait que ce soit un bug dans ton code qui fait en sorte que le CheckBox ne change jamais d'état.

    Continue à exposer ton problème, je vais t'aider du mieux que je peux, j'utilise fréquemment les DataGridView dans le cadre de mon travail.

    Au plaisir!
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  5. #5
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut question pour mastermind
    bonjour,

    comme j'ai lu que tu utilisé frequemment le datagridview peut etre sais tu comment faire pour capturer le KeyDown dans une cellule?

    merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2011, 16h35
  2. Réponses: 1
    Dernier message: 30/03/2011, 16h05
  3. comment tester si une case est cochée dans un fenêtre d'impression
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/08/2009, 16h13
  4. Comment récupérer l'état d'une case à cocher
    Par oursquetaire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/01/2006, 08h58

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