Datagridview et sélection

cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013 - 24 nov. 2009 à 13:42
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 25 nov. 2009 à 13:01
Bonjour, est-il possible de retirer toutes sélection car j ai une colonne avec un checkbox et lorsque je coche, il garde un élément sélectionner et cela fausse mon résultat

En fait j'ai une boucle qui vérifie pour chaque ligne si la case est cochée, mais il ne vérifie jamais la dernière ligne

Si j'en coche 4, il en garde que 3, si j en coche 5 il en garde 4.
        For x = 0 To TotalList - 1
            If ((Me.DataGridView1.Rows(x).Cells(8).Value) <> 0) Or ((Me.DataGridView1.Rows(x).Cells(8).Value) <> "") Then
                Direction(y, 0) = (Me.DataGridView1.Rows(x).Cells(6).Value)
                Direction(y, 1) = (Me.DataGridView1.Rows(x).Cells(7).Value)
                TotalSelection = TotalSelection + 1
                y = y + 1
            End If
        Next x


merci pour votre aide car il oublie a chaque fois le dernier sélectionné et j ai deja essayé plein de correction qui aboutisse au même

17 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2009 à 13:51
salut,

mais comme on ne sait pas comment tu initialises TotalList, que donne :
For x = 0 To TotalList - 1

?

[hr]
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2009 à 14:02
Effectivement PCPT a raison, le mieu serait encore :

For Each Row In DataGridView1.Rows
    If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then
                Direction(y, 0) = (Me.DataGridView1.Rows(x).Cells(6).Value)
                Direction(y, 1) = (Me.DataGridView1.Rows(x).Cells(7).Value)
                TotalSelection = TotalSelection + 1
                y = y + 1
    End If
Next


Question > Pourquoi :

If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then 


Et pas

If Row.Cells(8).Value <> 0 Then 


Ta cellule est bien de type DataGridViewCheckBoxCell ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 14:34
oui elle est bien de ce type mais apparemment une valeur est attribué a cette cellule si on ne fait que la sélectionner sans cocher le checkbox.

totallist est la variable qui reprend le nombre total de ligne contenu dans mon datagridview
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 14:40
et pour ton code :

For Each Row In DataGridView1.Rows
    If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then
                Direction(y, 0) = (Row.Cells(6).Value)
                Direction(y, 1) = (Row.Cells(7).Value)
                TotalSelection = TotalSelection + 1
                y = y + 1
    End If
Next


Meme problème qu avec mon code après.
En fait il n'envoie pas les donnée de la dernière ligne cocher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 15:08
je rectifie il n'envoie pas la row(O)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2009 à 15:18
For Each Row In DataGridView1.Rows
If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then
Direction(y, 0) = (Row.Cells(6).Value)
Direction(y, 1) = (Row.Cells(7).Value)
TotalSelection = TotalSelection + 1
y = y + 1
End If
Next

Autant pour moi, j'ai fais un bête copié collé du contenu de la boucle, mais par contre je ne comprend pas, as-tu essayé avec un msgbox ?

For Each Row In DataGridView1.Rows
If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then
msgbox (Row.Index)
End If
Next

Tu peux tester comme ca voir si les lignes sont toutes prises en compte


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 21:34
j ai tester avec le message box

j ai 4rows donc il devrait aller a l'index 3 et il ne m'affiche que le 0,1,2

donc il ne va pas jusqu'au dernier
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 21:42
c'est toujours le dernier fichier qui a ete cocher qui n'est pas pri en compte.

Par contre j'ai un autre souci, quand je coche et que je décoche, il fait comme si l'élément été encore cocher...
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
24 nov. 2009 à 22:03
encore plus bizarre, je viens de créer un nouveau projet avec un datagridview et juste un bouton, j ai fait ce code la et ca fonctionne nickel

pourtant j'ai rien d'autre dans mon projet réel.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2009 à 22:27
If Row.Cells(8).Value <> 0 Or Row.Cells(8).Value <> "" Then 


Si tu veux mon avis le problème vient de cette ligne.

la propriété value du DataGridViewRow contient en principe la valeur de la cellule à laquel elle est associé dans la base de données, or ici, ta cellule n'est associé à aucune données, il faut donc tester ce que contient value:

For Each Row In DataGridView1.Rows
msgbox (Row.Index & ": " & Row.Value.ToString)
Next

essaye pour voir cela peut t'aider à avancer.

++ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
25 nov. 2009 à 09:19
ca va j ai trouver la solution

en fait il fallait mettre l'information dans une variable avant de mettre la variable dans le tableau.
        For Each Row In DataGridView1.Rows
            If Row.Cells(8).Value <> 0 Then 'Or Row.Cells(8).Value <> ""
                RowSix = (Row.cells(6).value)
                RowSept = (Row.cells(7).value)
                TotalSelection = TotalSelection + 1
                Direction(y, 0) = RowSix
                Direction(y, 1) = RowSept
                y = y + 1
            End If
        Next

la ca fonctionne, pourquoi ca je sais pas lol
et
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
25 nov. 2009 à 09:34
j ai trouver mais le soucis qui est bizarre c'est que ca fonctionne sur un bouton or de ma toolstrip

Si je met le code dans un bouton a part, ca fonctionne, mais si je met le meme code dans un bouton de la toolstrip, il prend pas le dernier :s
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2009 à 09:45
de toute façon avec le peu d'infos et de code que tu nous laisses, ton sujet va durer 3 semaines...

donc çà sera un problème sans explication, mais la solution est simple :
tu as dit que çà fonctionnait avec un autre projet?
alors supprime ta grid et remplace la, tu as du changer certaines propriétés en mode design
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
25 nov. 2009 à 09:47
j ai fait et ca fait le meme,

y a que quand je met un bouton hors de la toolstrip que ca fonctionne
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
25 nov. 2009 à 09:50
bon pour plus d'info, j ai un form avec

- datagrid qui recoi des information et une colonne avec une case a cocher
- une toolstrip avec un bouton exporter

dans la datagrid y a des donné sur des photos et quand on coche, ca envoie le lien de la photo dans un tableau qui est repri dans un autre formulaire avec une progressbar

tout fonctionne si je met un bouton exporter hors de la toolstrip hors j aimerai le bouton dans la toolstrip (celui de la toolstrip fonctionne mais oublie le dernier élément cocher)
0
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
25 nov. 2009 à 10:02
ca va je me suis pas pri la tête, j ai cacher le bouton derriere la data grid et mon bouton dans le toolstrip, je lui ai mi comme code button1.performclick()

et ca fonctionne sans qu'on voit mon bouton

merci pour ton aide
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 nov. 2009 à 13:01
Et bah ! C'est du propre tiens ! Tu ferais mieux de trouver d'ou vient le bug plutot que d'y palier avec des solutions à la 'Mc Giver' sans même essayer de comprendre l'origine de ce bug.

Après c'est ton soft, je dis juste ca pour te faire avancer... tu fais comme tu le sens.

++ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous