Comment ca marche [Résolu]

thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention - 14 sept. 2006 à 14:07 - Dernière réponse : cs_Nurgle 1648 Messages postés samedi 6 novembre 2004Date d'inscription 28 avril 2011 Dernière intervention
- 15 sept. 2006 à 08:35
Bonjour,
Je me lance dans la programmation ASP/VB. J'utilise pour cela VS2005.

Je cherche a faire quelques chose de simple : Remplir un combo lors du load de la page, et lorsque l'utilisateur selectionne dans la combo afficher la valeur de celle ci dans un text box.
Et je n'y arrive pas

Dans mon code j'ai :

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
         NomList1.Items.Add("A")
         NomList1.Items.Add("B")
         NomList1.Items.Add("C")
         NomList1.Items.Add("D")
    End Sub

    Protected Sub NomList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NomList1.SelectedIndexChanged
        Label1.Text = "eeee"
    End Sub
End Class

Au lancement ma comboliste est bien remplie avec A B C et D
Dans l'evenement de ma combo j'ai mis l'evenement SelectedIndexChange
Mais si je selectionne une valeur dans la combo mon label2 ne contient pas "eeeee"

Sauf si je met dans la propriete de la com Autopostback a True
Mais dans ce cas, ma combo contient A B C D A B C et D
En fait je me rend compte qu'il est repassé par la procédure Load

Donc ma question, comment ca marche ? Comment faire simplement ? Je cherche sur le net depuis ce matin, jetrouve plein de truc mais je comprends rien.
Qu'elle est la logique SVP

PS : C'est dur de débuter
Afficher la suite 

4 réponses

Répondre au sujet
cs_Nurgle 1648 Messages postés samedi 6 novembre 2004Date d'inscription 28 avril 2011 Dernière intervention - 15 sept. 2006 à 08:35
+3
Utile
Euh non, quand la page est rechargée, tout les évènements du cycle de vide de la Page (PreInit, Init, Load, LoadComplete, PreRender, Render, et bien d'autres), ils sont tous réexécuté à chaque PostBack. Il ne faut pas oublier que tu fais du web, et que donc par conséquent tout fonctionne sous forme de requête : le client envoie une demande de la page, tu lui renvoies toute la page, il clique sur un bouton ou un truc du genre (-->PostBack), tu lui re-renvois toute la page, mais avec des trucs différents, etc...).

dans chaque évènement du cycle de vie de la Page tu dois tester si il y a eu oui ou non un PostBack.
Une petite correction tout de même, c'est :

If Not Page.IsPostBack Then
' et mets ici tout le code qui ne doit pas être ré-exécuté au rechargement de la page.
' dans ton cas tous les NomList1.Items.Add()
End If
' vu que toi tu ne veux pas que ça s'exécute au PostBack  (désolé, dans la précipitation, je l'avais oublié celui-là )

A++

<hr width="100%" size="2" />Nurgle (Antoine)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Nurgle
cs_poppyto 541 Messages postés dimanche 29 décembre 2002Date d'inscription 13 mai 2011 Dernière intervention - 14 sept. 2006 à 21:33
0
Utile
Mmm tu devrais te documenter sur le fameux "PostBack".
Quand tu es en mode PostBack (envoi de page avec la méthode HTTP "POST"), les contrôles contenu dans le ViewState sont sauvegardés et c'est pour ça que ton combobox est dédoublé.

Si pour toi viewstate/postback & co c'est du charabia, achète toi un petit bouquin ça fait vraiment pas de mal !

Poppyto
Cours de basse gratuits avec vidéos et ralentis
Cours de guitare gratuits avec vidéos et ralentis/A>
Commenter la réponse de cs_poppyto
cs_Nurgle 1648 Messages postés samedi 6 novembre 2004Date d'inscription 28 avril 2011 Dernière intervention - 14 sept. 2006 à 21:57
0
Utile
Salut,
Je suis tout à fait d'accord avec poppyto sur ce point, achète toi un bon gros bouquin sur ASP.NET 2.0 .

Sinon, pour répondre tout de même à ta question, dans ton PageLoad, mets :

If Page.IsPostBack Then
' et mets ici tout le code qui ne doit pas être ré-exécuté au rechargement de la page.
' dans ton cas tous les NomList1.Items.Add()
End If

A++

<hr width="100%" size="2" />Nurgle (Antoine)
Commenter la réponse de cs_Nurgle
thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention - 15 sept. 2006 à 06:50
0
Utile
Bonjour, merci pour ces réponses.
Je vais suivre vos conseils et m'acheter un gros bouquin effectivement.

Je suis un ancien programmeur de Delphi, donc pour moi quand je dit qu'un evenement onchange doit executer la procedure x, il n'y a que X qui s'execute...
La c'est vrai que c'est un peu déroutant.

Donc en fait si je vous suis, quand je fait un postback  (puisque cela semble etre le seul moyen pour que onchange fonctionne), tout le code de ma page est executer ?
Il faut donc que dans chacune des procedures je fasse un test de pour savoir si c'est un postback, e également qui envoie ce postbak ?
C'est bien ca la logique ?

Il n'existe pas un genre de canevas, de squelette, qui pourait m'aider ?
Commenter la réponse de thonyboy

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.