Bonjour à tous
ce post fait suite à celui ci (http://www.developpez.net/forums/d91...trol-postback/) visiblement mal placé
bref, j'ai un soucis avec un usercontrol qui contient une liste déroulante chargée en fonction d'un paramètre qui provient de la page principale.
puisque la valeur du paramètre est variable (c'est le but), j'ajoute dynamique mon UC dans ma page de la manière suivante (c'est pê pas la bonne méthode):
jusque là pas de pb. seulement j'ai une RadioButtonList dans mon UC et un bouton valider pour sauvegarde un enregistrement et lorsque j'arrive dans l'evenement Click de mon bouton, la selectedValue de mon RadioButtonList est tjrs 0 (ma première valeur)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim monUC1 As MonUC = LoadControl("~/UserControls/monUC.ascx") monUC1.param = maValeur Me.FindControl("UC").Controls.Add(monUC1)
j'ai testé la valeur dans le pageLoad du UserControl, elle vaut aussi 0. En revanche à l'écran, c'est la bonne valeur qui est selectionnée.
je ne comprends pas trop. j'imagine qu'au postback le UserControl est recréé et donc réinitialisé mais dans ce cas pourquoi la bonne valeur est finalement conservée et affichée ? et sinon comment faire pour retrouver la valeur selectionnée ?
--------
en fait j'ai refais des tests. Quand ma page et donc mon UC se recharge suite à un postback le page load du webform se lance, puis celui du usercontrol (là la valeur de mon radio button list vaut tjrs 0). par contre lorsque je teste la même valeur dans le prerender de la page ou du UserControl, elle prend désormais la bonne valeur.
comme si les valeurs du postback n'étaient rechargées qu'en tout dernier. ca me parait étrange. je ne sais pas si je m'y prends bien.
d'un autre coté, lorsque je n'ajoute pas le UC dynamiquement mais directement dans le code de la page aspx comme cela :
je n'ai pas le pb. la bonne valeur est directement accessible. mais dans ce cas comment lui passer un paramètre "param" qui peut varier en fonction des choix de l'utilisateur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <uc1:uc1 id="Uc1" param="xxx" runat="server"></uc1:uc1>
la seule solution que j'ai trouvée c'est que le UserControl aille directement lire la valeur "param" dans la page parent dans son page load. ca ma parait assez lourd parce qu'il faut que le UC connaisse le nom des controles dans la page parents pour récuperer leur valeurs.
merci de votre aide
Partager