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 :

Datagridview et checkbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut Datagridview et checkbox
    Bonsoir tout le monde !

    J'ai une datagridview, 6 colonnes dont la dernière est de type checkbox, et un bouton modifier par exemple grisé par défaut, la datagridview étant pré remplie au lancement de l'appli par une commande SQL.

    J'aimerais lorsque je coche un checkbox correspondant à une ligne du datagrid donc, le bouton modifier se dégrise, et si je sélectionne plus d'une ligne, le bouton se grise, même chose si je ne sélectionne aucune ligne (donc si je décoche tout) ...

    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
        Private Function verif_modif()
            Dim cpt As Integer = 0
            For j = 0 To DataGridView3.RowCount - 2
                If (DataGridView3(5, j).Selected.ToString = True) Then
                    cpt = cpt + 1
                End If
            Next
            Return cpt
        End Function
     
    Private Sub DataGridView3_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView3.CellContentClick
            Dim i As Integer = 0
            i = verif_modif()
            If i = 1 Then
                Me.Button10.Enabled = True
            Else
                Me.Button10.Enabled = False
            End If
        End Sub
    j'ai essayé ce code là, mais ca ne marche pas ... je vois pas pourquoi !

    Merci de votre aide !

  2. #2
    Membre expérimenté Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Par défaut
    bonjour,

    tu peut adapter ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RéférencesDataGridView.SelectionChanged
     
     
            Try
     
                ' test si ligne sélectionnée
                If DataGridView1.SelectedRows.Count > 1 Then
     
            ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut
    Ah, alors je réexplique ^^

    donc :

    L'appli est composée d'un datagridview, pré rempli au lancement (un détail^^). J'ai 3 boutons : ajouter, modifier et supprimer.

    6 colonnes, dont la dernière est de type checkbox. Disons que je veux modifier une ligne (dans le code je gère ça avec un autre onglet mais c'est pas le souci ici), je coche cette ligne, et le bouton modifier se dégrise pour que je puisse cliquer dessus.

    On modifie une seule ligne à la fois, donc par défaut le bouton modifier est grisé (car au lancement de l'appli, aucun checkbox n'est coché), ensuite si je coche un checkbox, le bouton modifier se dégrise donc me permettant de modifier ... mais si je coche une autre checkbox, ou si je décoche toutes les checkbox, le bouton se regrise ...

    Voilà en gros, peut etre plus clair ?

    Et avec le code que j'ai, en gros, je sélectionne une case, ok le bouton se dégrise ... mais que je décoche la case ou que je coche une 2eme ou 3eme .... le bouton reste dégrisé ! Un msgbox de la valeur retournée par la fonction verif_modif donne la valeur 1 tout le temps, quelque soit le nombre de cases cochées ! oO
    Maintenant si je clique sur une cellule d'une ligne, bizarrement le bouton se regrise .. je comprends pas oO moi, c'est juste les checkbox que je veux surveiller, pas les autres cellules lol ...

    Donc voilà, si c'est plus clair, sinon hésitez pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut
    Citation Envoyé par anonymousse Voir le message
    bonjour,

    tu peut adapter ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RéférencesDataGridView.SelectionChanged
     
     
            Try
     
                ' test si ligne sélectionnée
                If DataGridView1.SelectedRows.Count > 1 Then
     
            ...
    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub DataGridView3_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView3.SelectionChanged
     
            If DataGridView3.SelectedRows.Count = 1 Then
                Button10.Enabled = True
     
            Else
                Button10.Enabled = False
            End If
     
        End Sub
    mais ça ne marche pas il me prend pas les checkbox cochés je crois .. le bouton reste grisé

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut
    J'ai pas mal galéré avec les checkbox dans les datagridview pour ma part:

    - A savoir, par défaut elle ne sont ni "true" ni "false" mais décochées et de valeur nothing; il faut les "initialiser" par exemple tous à "false" pour pouvoir lire la valeur.

    - autre risque, l'événement qui correspond au click dans une cellule n'est pas exactement équivalent au changement de valeur d'une checkbox, il faut bien vérifier s'il intervient avant ou après le changement de valeur, etc...

    zebrette.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut
    Merci pour tout, c'était en effet la valeur value qui était nothing !!

    Donc voilà le code si ca peut intéresser ...

    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
    23
    Private Sub DataGridView3_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView3.CellContentClick
            If DataGridView3(e.ColumnIndex, e.RowIndex).ValueType.Name = "Boolean" Then 'On veut uniquement agir si un checkbox a été modifié
                Dim i As Integer = 0
                If (DataGridView3.CurrentCell.Value = vbNull) Then 'Si un checkbox n'a pas de value
                    DataGridView3.CurrentCell.Value = False 'on met sa value à false, car par défaut, le checkbox est décoché, donc false
                End If
                'Switch(ch1.Value.ToString())
                Select Case DataGridView3.CurrentCell.Value 'Suivant la valeur du value
                    Case True 'si la case est coché et que l'on recheck le checkbox
                        DataGridView3.CurrentCell.Value = False 'on passe sa value à false
     
                    Case False 'et vice versa
                        DataGridView3.CurrentCell.Value = True
                End Select
                i = verif_modif() 'on utilise la fonction pour compter le nombre de cases cochées
     
                If i = 1 Then 'si une case et seulement une est cochée
                    Me.Button10.Enabled = True 'alors on dégrise le bouton modifier
                Else 'sinon
                    Me.Button10.Enabled = False 'on re dégrise
                End If
            End If
        End Sub

  7. #7
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Citation Envoyé par nino2 Voir le message
    j'ai essayé ce code là, mais ca ne marche pas ... je vois pas pourquoi !
    Hello

    Et qu'est ce qui ne marche pas? Le bouton qui ne se désactive pas?

    Citation Envoyé par nino2 Voir le message
    J'aimerais lorsque je coche un checkbox correspondant à une ligne du datagrid donc, le bouton modifier se dégrise, et si je sélectionne plus d'une ligne, le bouton se grise, même chose si je ne sélectionne aucune ligne (donc si je décoche tout) ...
    Et je t'avouerai que je n'ai pas tous compris
    En faite tu fais:
    1 - je coche un checkbox
    2 - je sélectionne une ou plusieurs lignes

    3 - Si une ligne sélectionnée => bouton modifier enabled=true
    3bis - Si plusieurs lignes sélectionnées => bouton modifier enabled=false

    je me demande si la fonction verif_modif() retourne ce qu'il faut...Dommage, je n'ai pas les outils pour tester, je verrais demain

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

Discussions similaires

  1. Datagridview et checkbox
    Par allergique dans le forum VB.NET
    Réponses: 4
    Dernier message: 14/11/2009, 15h39
  2. DatagridView et checkbox
    Par amirad dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/03/2009, 09h57
  3. DatagridView et checkbox
    Par amirad dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/03/2009, 11h21
  4. Modification d'une ligne d'un datagridview via checkbox
    Par DiamonDonald dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/04/2008, 23h42
  5. [VB.NET 2005] DataGridView et CheckBox
    Par nathanaelle dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/08/2006, 10h16

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