GridView + imageButtons.

cs_cyclotor Messages postés 15 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 3 octobre 2006 - 28 sept. 2006 à 16:33
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 30 sept. 2006 à 10:26
Salut à tous!

J'ai un petit problème avec un gridView! Dans mon gridView, j'ai dans une colonne de type template, un ensemble de plusieurs boutons. Le problème est le suivant:

Chaque bouton doit avoir une fonction différente. L'événement de click doit me permettre de récupérer mon DataKey. Mais lorsque j'utilise:

1) Le RowCommand Event, les seuls props que je peux récupérer sont: CommandName, CommandSource et CommandArgument, mais je ne peu pas récupéer mon DataKey.

2) Le SelectedIndexChanging la seule props que j'ai c'est newSelectedIndex qui me permet de récupérer mon DataKey, mais je ne peux pas faire de Switch sur le CommandArgument car la props n'existe par pour cet évenement.

Quelle solutions s'offrent à moi pour cela ?

Merci d'avance

A+

Juan

7 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
28 sept. 2006 à 21:07
Bonsoir,

Il me semble que tu peux (et tu dois) utiliser tongridview.selectedItem.value qui est le datakey de la ligne courant, attention il faut rebinder ton gridview à chaque rechargement.

<hr />Cyril - MVS - MCP
0
cs_cyclotor Messages postés 15 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 3 octobre 2006
29 sept. 2006 à 08:03
Yep,

Alors visiblement il n'y a pas de prop SelectedIndex pour une grid. Quand j'essai avec SelectedValue qui est sensé me retourné la DataKey correspondante pour la Row sélectionné (le tout lors de l'appel par l'événement GridViewCommand)...

int

i =
Convert.ToInt32(grdDJ.SelectedValue);

i contiendra bien mon id mais celui de la ligne que j'aurais sélectionnée avant la nouvelle... donc c'est comme s'il mettait la valeur après le bind...
Comment faut-il faire... pour faire le rebind ?

Magrille.DataBind()?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
29 sept. 2006 à 09:10
il faut binder ton controle avant l'evenement click c'est à dire dans le load de la page.

<hr />Cyril - MVS - MCP
0
cs_cyclotor Messages postés 15 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 3 octobre 2006
29 sept. 2006 à 09:48
Yep,

Alors mon bind se fait correctement et j'ai mes données dans la grille, mais ce qui est bizarre c'est que lorsque je clique sur ma row, je dois finalement cliquer deux fois pour avoir le bon DataKey... c'est comme s'il y avait un clique de retard. Donc lors de mon premier click sur une row, mon id est à 0 lorsque je clique sur une deuxième row, j'obtient la valeur de la premère row sur laquelle j'ai cliqué...
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
29 sept. 2006 à 10:09
Quand bind tu ton gridview ? tu t'es abonné à selectedindexchanging (en train de se changer donc t'auras pas la nouvelle valeure) ou sur SelectedIndexChanged (c'est finit il est changé)

<hr />Cyril - MVS - MCP
0
cs_cyclotor Messages postés 15 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 3 octobre 2006
29 sept. 2006 à 10:18
Non, en fait voici mon code:

protected

void grdDJ_RowCommand(
object sender,
GridViewCommandEventArgs e){

   

 int i =
Convert.ToInt32(grdDJ.SelectedValue);

}

en gros... c'est clair qu'après je vais faire un switch en fonction du commandArgument...

Le problème avec le selectedindexchanging c'est que je ne peux pas récupérer le commandArgument... car en fait j'aimerai utiliser 3 boutons qui appellent la même méthode liée à l'événement... je récupère facilement le row id mais pas le commandArgument à l'inverse du RowCommand ou la je peux récupérer le commandArgument, mais pas le row id...
Le bind se fait dans une méthode appelée dans le page load.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
30 sept. 2006 à 10:26
Je ne vois pas vraiment quel est le problème, créer une page bidon avec un gridview et un datasource tout simple et essaye de le faire fonctionner puis ensuite regarde les différence avec ton code.

<hr />Cyril - MVS - MCP
0
Rejoignez-nous