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 :

[VB.Net] Récupération d'une checkbox dans un datagridview


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut [VB.Net] Récupération d'une checkbox dans un datagridview
    Bonjour tout le monde, voici mon code (je suis sur VS2008):

    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
    Private Sub ToolStripBtSupprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripBtSupprimer.Click
            Dim listeUser As New ArrayList
            For Each row As DataGridViewRow In DGVUtilisateur.Rows
                If row.Cells.Item("ColumnSelection").Value = True Then
                    listeUser.Add(row.Cells.Item("ColumnMatricule").Value)
                End If
            Next
            Dim ajoutReussi As Boolean = CtrlUtilisateur.setListeInactifs(listeUser)
            If ajoutReussi Then
                MsgBox("Suppression des profils réussie", MsgBoxStyle.OkOnly, "Suppression profil(s)")
            Else
                MsgBox("Echec à la suppression des profils", MsgBoxStyle.OkOnly, "Suppression profil(s)")
            End If
            affichageUtilisateur()
        End Sub
    Le souci c'est que quand il passe sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If row.Cells.Item("ColumnSelection").Value = True Then
    Il ne voit jamais les checkboxs cochées, il prend toujours la valeur "False"...

    Après pas mal de recherche où j'ai vue que tout le monde faisait comme moi pour récupérer les valeurs des cells d'une dgv, et de nombreuses tentatives de ctype sur le type, la value et autre je commence à desespérer :'(

    Donc si quelqu'un a déjà rencontré ce bug, merci de m'aider à trouver la solution.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Personne n'a une idée sur le pourquoi du comment ?

    Je viens de retenter mais il ne trouve qu'une valeur False à chaque checkbox (qu'elle soit cochée ou non), et en plus le State de la row est à nothing...

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Je travaille sur une interface avec ce genre de cellule (checkBox).
    Moi tous fonctionne correctement, la différence avec ton code est que moi je ne fais pas de For Each, mais un For :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i as integer = 0 to DatagridView1.RowCount - 1
    if Datagridview1.item(index, i).value = True then
    ...
    End if
    Next
    A savoir que mon index est l'index de ma colonne qui est composé de CheckBox.


    Treize.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    En fait après toute une nouvelle batterie d'essais, je me suis rendu compte qu'il ne prenez pas en compte la ligne selectionnée.
    C'est à dire que si je coche 3 lignes, il ne prendra que les 2 premières et pas la dernière (celle qui est en surbrillance puisque la dernière cliquée), si je clique sur une autre ligne (pour en "activer" une non cochée) il me prendra bien les 3 cochées, si je me sers du multiselect, il envoie toute les lignes sélectionnées (et cochées bien sûr).

    Alors si quelqu'un arrive à y comprendre quoi que se soit

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

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Solution "trouvée" (entre guillemets) parce qu'un peu crado mais bon ça fonctionne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub DGVUtilisateur_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVUtilisateur.CellClick
            If e.ColumnIndex = 1 Then
                If CBool(sender.SelectedCells(1).Value) Then
                    sender.SelectedCells(1).Value = False
                Else
                    sender.SelectedCells(1).Value = True
                End If
            End If
        End Sub

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/12/2009, 11h20
  2. Réponses: 7
    Dernier message: 08/08/2007, 13h04
  3. Réponses: 4
    Dernier message: 11/06/2004, 16h27
  4. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57
  5. Oracle Designer: récupération d'une vue dans la base
    Par BILLYPATOU dans le forum Designer
    Réponses: 2
    Dernier message: 19/03/2004, 11h08

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