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

C# Discussion :

Vérifier si checkbox d'un datagridview est cochée [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut Vérifier si checkbox d'un datagridview est cochée
    Bonjour à toutes et à tous.

    Je rencontre actuellement un petit souci, je tente d'utiliser les DataGridView et je ne sais pas comment vérifier si les colonnes comportant une checkbox sont cochées.

    En fait mon DataGridView se rempli suite à une recherche, il se rempli avec une liste de plats correspondants aux critères de recherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [...]
                foreach (Plat plat in listeplat)
                {
                    dtgResultatRecherchePlats.Rows.Add(plat.GetNoPlat(), plat.GetNomPlat(), plat.GetDescription());
                }
    [...]
    J'ai ajouté une colonne CheckBox dans mon DataGridView et je voudrais savoir comment vérifier quelles sont celles qui sont cochées et quelles sont celles qui ne le sont pas ...
    Dois-je utiliser un foreach ? Si oui, sur quoi ?

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    J'ai testé cette solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DataGridViewRow row;
                int noplat;
                row = new DataGridViewRow();
                for (int i = 0; i <= dtgResultatRecherchePlats.RowCount-1; i++)
                {
                    row = dtgResultatRecherchePlats.Rows[i];
     
                    if ((bool)row.Cells[CheckSupprimerPlatSelectionne.Index].Value)
                    {
                        noplat = Convert.ToInt32(row.Cells[0].Value);
                        AccesMySQL.SupprimerPlat(noplat);
                    }
                }
    ça supprime bel et bien le plat en question de la base de données. Mais juste après l'appli plante et me met comme erreur :"L'exception NullReferenceException n'a pas été gérée. La référence d'objet n'est pas définie à une instance d'un objet."

  3. #3
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Il faut instancier row dans le corps de la boucle for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (int i = 0; i <= dtgResultatRecherchePlats.RowCount-1; i++)
    {
          row = new DataGridViewRow();
          row = dtgResultatRecherchePlats.Rows[i];
          //...
    }

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    Merci pour votre réponse.
    J'ai testé mais cela me met toujours la même erreur..

  5. #5
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Pourrais-tu effectuer un debogage pas à pas et nous dire la ligne qui génère l'erreur?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    Malheureusement je ne sais pas comment faire ça :/

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Par défaut
    Il faut que tu lance ton projet en mode "debug" (F5) après avoir préalablement mis des points d'arrêts (Clic droit sur la ligne -> Point d'arrêt -> Ajouter un point d'arrêt).

    Tu peux mettre un point d'arrêt au début du segment de code que tu veux vérifier, puis avancer le débogage 'pas à pas' en appuyant sur F11, ou en mettre uniquement sur les lignes que tu veux vérifier (pour passer d'un point d'arrêt à un autre, il faut faire 'shift+F11'.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    Merci beaucoup.

    Donc en suivant la procédure que tu m'as expliqué j'ai remarqué que lorsqu'il en est à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    row = dtgResultatRecherchePlats.Rows[i];
    il met en bas row : {DataGridViewRow { Index=-1 }}
    Puis dans la ligne d'après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((bool)row.Cells[CheckSupprimerPlatSelectionne.Index].Value)
    il met row: {DataGridViewRow { Index=0 }}

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Par défaut
    Ces informations ne m'éclairent pas beaucoup...

    Parlons peu, parlons bien : la 'null référence exception' signifie que tu essaye d'accéder à un objet de valeur "null".
    Si tu as un objet:
    et que tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string nomPlat=monPLat.getNomPlat();
    Tu auras cette exception, par exemple.

    Mais d'abord trouvons où se situe cet objet null auquel ton code essaye tant bien que mal d'accéder. Il faut que tu nous donnes la ligne de code où, en faisant le débogage, ton programme se coupe violemment.

    Petit + : Je t'invite à prendre le réflexe d'encapsuler ton code dans des blocs 'try-catch'. Ça évite les plantages intempestifs et ça te permet par exemple de sortir proprement tes exceptions, de les normaliser, de les gérer...

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
       ton code
    }
    catch (Exception e)
    {
        System.Diagnostics.Debug.Write(e.ToString());
    }
    Au lieu de planter salement (bien que Visual Studio te mettent une gentille petite fenêtre), le fil d’exécution passera dans le bloc 'catch' et te sortira l'exception avec les informations annexes sur la sortie standard. (Pour faire apparaitre la sortie standard : Déboguer - Fenêtre - Sortie)

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    Oh pardon ! J'avais arrêté le pas à pas au moment où il m'a mis un message comme quoi ça avait bien été supprimé alors que c'est après qu'il plante.

    Donc j'ai refait la procédure et en fait il déroule tout normalement, et c'est quand il parcourt la boucle une seconde fois que ça plante

    Et merci pour tes conseils et explications sur le try catch

    EDIT: j'ai trouvé !!! En fait quand je lance une recherche de plat ça ajoute une ligne vide dans ma datagridview et comme il parcourt tant qu'il y a des lignes, ça plantait pcq il parcourait la ligne vide !!

    En tout cas merci !!

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

Discussions similaires

  1. [XL-2003] Bloquer l'utilisation d'une checkbox si une autre est cochée
    Par xiungung dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2009, 15h36
  2. Vérifier si au moins une case est cochée dans checkbox
    Par pasc06 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 18/11/2008, 15h14
  3. Vérifier qu'au moins une case est cochée
    Par zizou86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/02/2008, 13h53
  4. Décocher une checkbox si une autre est coché
    Par Sieldev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/07/2007, 13h11
  5. Vérifier si au moins une case est cochée
    Par ozzmax dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/07/2007, 15h34

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