GridView + imageButtons.

Signaler
Messages postés
15
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
3 octobre 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
15
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
3 octobre 2006

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()?
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
il faut binder ton controle avant l'evenement click c'est à dire dans le load de la page.

<hr />Cyril - MVS - MCP
Messages postés
15
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
3 octobre 2006

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é...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
15
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
3 octobre 2006

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.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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