Problème sur gestion des Dropdownlist

DJJOP Messages postés 4 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 25 août 2008 - 18 août 2008 à 14:32
DJJOP Messages postés 4 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 25 août 2008 - 25 août 2008 à 17:02
Bonjour,
je suis débutant dans ASP.NET 2. je suis sur un webform ou j'utilise un dropdownlist, trois textbox, et un bouton. lorsque je choisi un ligne dans mon dropdownlist je fais une recherche dans la base a l'aide de la methode SelectIndexChanged du dropdownlist, ce qui marche très bien. Mais lorsque je click sur le bouton au lieu de d'exécuter la méthode onclick du bouton il exécute d'abord le selectindexchanged du dropdownlist. ce qui fausse tout. car il effectue la recherche etse positionne sur la première ligne du ddl recherge mes textbox et fausse tout. 
Vraiment merci de m'aider car j'y suis depuis plus d'une semaine. Merci encore 

4 réponses

ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
23 août 2008 à 20:40
Bonsoir,

Je ne suis pas sûr de bien comprendre ton problème au niveau de la gestion des événements.
Mais si tu veux que, lors du onclick, le selectedindexchanged ne soit pas traité, tu peux dans le code de ton événement onclick l'enlever puis le rajouter à l'aide de removehandler et de addhandler. Par exemple :

RemoveHandler DropDownList1.SelectedIndexChanged, AddressOf DropDownList1_SelectedIndexChanged
... le code pour le onclick...
AddHandler DropDownList1.SelectedIndexChanged, AddressOf DropDownList1_SelectedIndexChanged

GGtry
DJJOP Messages postés 4 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 25 août 2008
25 août 2008 à 09:32
Merci déja pour ton aide.
De facon plus simple le probleme est la suivant. lors du click sur le bouton enregistrer avant l'exécution du code lié au bouton, le programme exécute d'abord l'évenement SelectedIndexChanged du ddl.

en parlant du removeHandler et du addhandler, ou est ce que je dois l'utiliser? dans le SelectedIndexChanged du ddl ou dans le OnClick du bouton.
Merci de m'aider vraiment j'y suis depuis plus de deux semaines maintenant.
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
25 août 2008 à 13:06
Bonjour,

Excuse moi, je crois que je n'y étais pas.
En fait, cela dépend, mais une solution est de faire ce que tu fais sur onclick sur un autre événement, comme le onload.
Suppose ceci :

Protected Sub ton_sub1(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim l1 As Label = CType(Page.FindControl("Label1"), Label)
        Dim ddl1 As DropDownList = CType(Page.FindControl("DropDownList1"), DropDownList)
        l1.Text = ddl1.SelectedValue.ToString()
    End Sub

Si tu le déclenches sur le onclick du button, l'événement selectedindexchanged aura lieu avant. Si donc, par exemple, dans le selectedindexchanged tu décides de mettre une valeur particulière en sélection, le label affichera cette valeur particulière.
Si tu le déclenches sur le onload du button, l'événement selectedindexchanded sera traité après (donc le label sera rempli avant que le selectedindexchanged ne change la valeur sélectionnée).

GGtry
DJJOP Messages postés 4 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 25 août 2008
25 août 2008 à 17:02
Merci pour ton aide mon frere,
tu m'as aider a trouver la solution. En fait j'ai plutot dans mon SelectIndexChanged verifier le control qui a declancher le postback et là je teste si c'est mon ddl j'effectue ma recherche sinon je ne fait rien
voila le code

procedure ddl_selectindexchange
{

string ctlName = Request.Params.Get(
"__EVENTTARGET");

if (!
string.IsNullOrEmpty(ctlName))

if (ctlName.Contains(DropDownList1.ID))
//ceci permet de verifier si c'est mon ddl qui a declaché le postback
{

RechercheDir(DropDownList1.SelectedValue);

}
}

merci
Rejoignez-nous