sdupont64
Messages postés8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention19 mars 2008
-
3 mai 2007 à 10:25
sdupont64
Messages postés8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention19 mars 2008
-
3 mai 2007 à 17:20
Bonjour tout le monde,
Je suis en stage en ce moment et je viens d'apprendre le vb.net ainsi que l'asp. J'ai passé beaucoup de temps sur les forums de Codes-Sources pour trouver la solution ainsi que dans les différents tutoriaux disponibles. Certains ont déjà eu le même problème que moi mais je n'arrive pas à adapter la solution proposée à mon code.
Mon problème concerne les GridView et leur ButtonField. J'ai une GridView qui se remplit depuis une base de données et une colonne de bouton correspondante (comme celle des select, edit ou encore delete...). J'arrive à connaître l'évènement associé au clic de mon bouton mais je n'arrive pas à récupérer les informations présentes sur la ligne cliquée. Quelqu'un peut-il m'aider svp D'avance un grand merci!
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 3 mai 2007 à 11:50
Bonjour,
pour l'event Select il faut que tu te serve de legridview.SelectedItemIndex, tu dois aussi avoir une propriété SelectedDatakeys ou alors récuperer la collection DataKeys et obtenir la bonne datakey en fonction de ton index.
Pour les autres event il faut passer par la variable e fournit dans la méthode s'abonnant à l'event.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 3 mai 2007 à 17:07
oula non pas ca ! :p
la propriété DataKeyNames sert à récuperer la clé primaire (ou les clés primaires dans le cas des clés composés) de ton enregistrement à partir de celui là tu peux récuperer les infos de ta ligne. Car en mettant toutes les colonnes dans le datakeynames ca fait exploser le viewstate (en taille).
Pour récuperer la ligne séléctionné n'utilise surtout pas Request.Form, qui est a bannir de la plupart des developpements, mais plutot idDuGridview.SelectedItemIndex ou un truc du genre ou alors tu peux aussi obtenir des informations dans la variable e
sdupont64
Messages postés8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention19 mars 20081 3 mai 2007 à 14:48
Merci pour ton aide jesusonline, j'ai finalement réussi à récupérer une valeur de mon GridView...mais j'ai encore du mal avec les autres colonnes car il me faudrai récupérer 4 valeurs différentes en tout et bien sur, le DataKeyNames est unique dans le tag...Mais bon! Il faut perséverer!!! Alors j'y retourne!
Encore merci
Vous n'avez pas trouvé la réponse que vous recherchez ?
sdupont64
Messages postés8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention19 mars 20081 3 mai 2007 à 12:02
Merci jessusonline d'avoir répondu si vite et d'essayer de m'aider alors que ma question peut sembler idiote pour certains...
J'ai essayer dans la source d'ajouter un DataKeyNames mais dès que je le fais, au moment du monGridView.DataBind() une exception se lève : DataBinding: 'System.Data.DataRowView' does not contain a property with the name '<nom du DataKeyName que j'ai donné>'.
Peut être que la solution est évidente mais je ne comprends pas pourquoi je n'y arrive pas.
Je réussi à récupérer le nom des colonnes, le numéro de la ligne sélectionné mais en aucun cas l'intersection des deux!
Vois-tu le problème stp?
Encore merci beaucoup
sdupont64
Messages postés8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention19 mars 20081 3 mai 2007 à 15:25
Enfin!!! La persévérance paie des fois ;-)
Pour ceux qui ont le même problème que moi, je vais mettre le code qui m'a permis de récupérer les informations que je voulais...
Le tag du GridView doit ressembler à ça par exemple :
.
IDAuxiMdt,IDAuxiProv,IDAuxiTP,IDAuxiAR doivent correspondre aux <HeaderTemplate> de vos colonnes (cad aux noms de celles-ci).
Pour récupérer la ligne séléctionnée, il existe surement d'autres méthodes que la mienne. J'ai utilisé celle-la mais en aucun cas je pense que c'est la meilleure :
Dim ligneSelectionnee As Integer = Request.Form(1).Substring(Request.Form(1).Length - 1)
Une fois la ligne récupérée, j'ai utilisé ce code :
Dim IDAuxiMdt = idDuGridView.DataKeys(ligneSelectionnee).Item(0)
Dim IDAuxiProv = idDuGridView.DataKeys(ligneSelectionnee).Item(1)
Dim IDAuxiTP = idDuGridView.DataKeys(ligneSelectionnee).Item(2)
Dim IDAuxiAR = idDuGridView.DataKeys(ligneSelectionnee).Item(3)
Ce code est placé dans l'évènement : idDuGridView_RowCommand qui correspond à l'action du clic dans le GridView.
J'espère que ces renseignements aideront certains d'entre vous...
Et encore un grand merci à Jesusonline qui a pris de son temps pour m'aider! Merci