GridView et ButtonField (récupérer infos ligne séléctionnée) [Résolu]

sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 10:25 - Dernière réponse : sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 3 mai 2007 à 11:50
3
Merci
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.

<hr />Cyril - MSP - MCTS ASP.net & SQL

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jesusonline
Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 3 mai 2007 à 12:13
3
Merci
dans la source ?

c'est au niveau du grdiview que tu spécifie le datakeynames

Cyril - MSP - MCTS ASP.net & SQL

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jesusonline
Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 3 mai 2007 à 17:07
3
Merci
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

idDuGridviev_rowCommand(Object sender, qqchoseEventArgs e)

dans ce e tu as pleins d'information.

<hr />Cyril - MSP - MCTS ASP.net & SQL

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jesusonline
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 14:48
1
Merci
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
Commenter la réponse de sdupont64
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 12:02
0
Merci
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
Commenter la réponse de sdupont64
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 14:13
0
Merci
Merci beaucoup jesusonline je vais essayer tout ça!
Sympa de ta part de prendre du temps pour aider des newbs comme moi
Commenter la réponse de sdupont64
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 15:25
0
Merci
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
Commenter la réponse de sdupont64
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 16:45
0
Merci
Petite erreur de ma part...
le DataKeyNames du tag du GridView ne correspond pas aux <HeaderTemplate> du GridView mais aux noms des colonnes retournées par la requete...
Voilà
Commenter la réponse de sdupont64
sdupont64 8 Messages postés jeudi 3 mai 2007Date d'inscription 19 mars 2008 Dernière intervention - 3 mai 2007 à 17:20
0
Merci
Bon...ok!
Alors ne suivez pas forcement tout ce que j'ai dit... lol
Et merci d'avoir continué à vouloir m'aider. Tu m'auras été d'une très grande aide.
Suivez plutôt les conseils de Jesusonline ;-)
Commenter la réponse de sdupont64

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.