cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008
-
10 sept. 2008 à 11:11
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008
-
10 sept. 2008 à 15:11
Bonjour à tous,
J'ai une gridview dans laquelle il y a des cases à cocher. Lorsque je clique sur le bouton "Valider", je parcours les lignes de ma gridview et je dois récupérer l'id de la ligne pour laquelle la case est cochée.
Le pb c'est qu'à chaque fois que je parcours ma gridview, il m'indique que "checked=false" alors que les cases sont bien cochées. Voici ma ligne de code pour le checkbox:
Dim chkAffectation
As CheckBox =
CType(GridViewUtilisateurs.Rows(Index).FindControl(
"chkSelection"), CheckBox)
La procédure fonctionne bien car j'arrive à récupérer l'id de chaque ligne parcouru, mais lorsque je fais le test
"if chkAffection=true then", je ne passe pas ds le code du If.
J'ai essayer ds le RowDataBound, même problème, quelqu'un peut m'aider?
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 10 sept. 2008 à 14:50
Tu effectues ta procédure de validation sur le onclick ?
Une possibilité serait que ta gridview est rebindée à la source de données avant la lecture des checkbox : dans ce cas, les checkbox seraient vides au moment de la lecture à cause du nouveau databind.
equinoxe83
Messages postés240Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 février 2011 10 sept. 2008 à 12:00
J'imagine que "coche" était un essai en débug ...
ça devrait fonctionner.
A tout hazard, tu es sure que le checkbox que tu va chercher est le bon ?
Vérifie directement dans ta table, éventuellement.
Sait-on jamais ...
@+
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008 10 sept. 2008 à 12:06
en effet coche c'était en débug
C'est le bon checkbox que cherche et je pense aussi que ça devrait fonctionner, malheureusement ça ne fonctionne pas...
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 10 sept. 2008 à 12:53
Bonjour,
If chkAffectation.Checked semblerait en effet devoir fonctionner pour déterminer quels checkbox sont cochés, à part que tu pouvais simplifier en écrivant seulement Dim chkAffectation As CheckBox = CType (myRow.FindControl( "chkSelection" ), CheckBox)
C'est bizarre que le problème se pose à ce niveau...
En revanche, il y a deux choses que je ne comprends pas dans ce code : pour ton label (id), tu écris "GridViewUtilisateurEntite", ailleurs "GridViewUtilisateur".
D'autre part, tu as :
Dim idCle As
Integer
=
CType
(id,
Integer
)
Tu n'as pas d'erreur à ce niveau ? id est un label... dont la valeur est accessible avec id.text
Je ne vois pas non plus très bien pourquoi tu récupères ta valeur de label comme un integer dans idCle pour juste ensuite le réécrire avec tostring...
equinoxe83
Messages postés240Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 février 2011 10 sept. 2008 à 12:57
a la place de celà :
Dim chkAffectation As CheckBox = CType (GridViewUtilisateur.Rows(Index).FindControl( "chkSelection" ), CheckBox)
Je ferais plutôt celà :
dim chkAffectation as checkbox =GridViewUtilisateur.Rows(Index).FindControl( "chkSelection" )
essaie toujours ..
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008 10 sept. 2008 à 14:21
Au niveau de l'id , il n'y a aucun soucis je récupère bien la valeur, et en ce qui concerne le GridView, c'est bien GridViewUtilisateur , j'avais modifié le nom et j'ai oublié de le modifié quand je l'ai mis sur le forum.
Mon problème se situe là: Dim chkAffectation As CheckBox = CType (GridViewUtilisateur.Rows(Index).FindControl( "chkSelection" ), CheckBox)
j'ai testé dim chkAffectation as checkbox =GridViewUtilisateur.Rows(Index).FindControl( "chkSelection" )
equinoxe83
Messages postés240Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 février 2011 10 sept. 2008 à 14:29
Selon moi, les éléments de ta base sont toujours à false.
Quel évènement déclenche cette procédure ?
Lorsqu'au début du post, tu parles de "valider", tu évoques quoi ??
Si c'est la validation du gridview entier, le Pb est tout autre.
Mais la première étape est de vérifier les champs directement dans ta base...
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008 10 sept. 2008 à 14:36
En fait, le but c'est d'affecter les éléments que j'ai coché à un groupe d'user, donc au départ ses utilisateurs n'appartiennent à aucun groupe. alors ce que je fais c'est que je sélectionne l'id de ceux qui ont été coché et ensuite je modifierai ds la base.
Quand je dis "valider", c'est qu'une fois que j'ai coché les éléments ds ma gridview, je clique sur un bouton valider qui va effectuer le traitement
equinoxe83
Messages postés240Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 février 2011 10 sept. 2008 à 14:43
OK. Je vois !
On est dans un gridview, donc on doit faire un update à chaque ligne affectée (au travers d'un postback sur la case à cocher, par exemple).
A moins de disposer d'une procédure spécifique (mais dont je ne vois pas la teneur).
Si tu retires ce traitement, la base prend bien en compte tes changements lorsque tu "valides" ?
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008 10 sept. 2008 à 14:52
La base ne fait aucune modification car mon test if chkAffectation.checked= true ne fonctionne pas.
En fait je mets les id des ceux qui ont été sélectionné en testant si c'est bien coché et comme il indique false à chaque fois, je ne modifie rien.
cs_citadine
Messages postés12Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention10 septembre 2008 10 sept. 2008 à 15:11
Oui je effectue le traitement sur "onclick"
En fait c'est bien ça, je n'y avait pas pensé, lorsque je clique sur le bouton, ça recharge la page donc ça me décoche tout.
Merci