Problemes UserControl dynamiques

sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006 - 23 nov. 2005 à 14:42
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 24 nov. 2005 à 11:18
Bonjour tout le monde,

Voila je cherche une solution a mon probleme. J'ai une page aspx dans laquelle je charge dynamiquement des usercontrols lors de l'evenement PreRender. Mes usercontrols s'affiche comme je le souhaite mais je n'arrive pas a acceder aux controles de cet usercontrol. Par exemple, si je clic sur un bouton appartenant a l'user control, ca n'execute pas le code qui lui est associe !!!

Avez vous des solutions a me proposer ?
Merci d'avance !!!

16 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 nov. 2005 à 16:18
Bonjour, c'est tout à fait normal !

l'evenement prerender et le dernier evenement avant l'envoie de la page vers le client, ajoute plutot tes controles dans le init qui est fait pour ca ...


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
23 nov. 2005 à 16:47
J'y avais songe mais je suis alors confronte a un autre probleme.
En fait, je charge mes usercontrols suivant le clic que l'utilisateur fait sur tel ou tel bouton (En fonction du bouton sur lequel l'utiliseur clic, je charge tel ou tel controle).

Le probleme, c'est que si je mets le code dans init, ce code s'executera avant celui du clic du bouton, c'est la raison pour laquelle j'utilisais le PreRender.

Bref, je sais plus trop comment faire du coup...

En tout cas, merci pour ta réponse c'est sympa !!!
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 nov. 2005 à 16:52
Tu peux détailler ce que tu veux faire ? car la je pige pas trop :)


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
23 nov. 2005 à 17:18
J'ai une page aspx contenant un certains nombre de boutons. En fonction du choix de l'utilisateur (click sur tel ou tel bouton), je charge mes user control (en utilisant le code usercontrol=Page.load(""), etc) dynamiquement dans un placeHolder.
Par ailleurs, mes user controls contiennent des controles serveur(dropdownlist, par exemple.)
A chaque fois que je clic sur un bouton, ca attribue une valeur a une variable viewstate.
Le code du chargement des user est dans une procedure a part, appelée LoadUserControl
(En fonction de la variable viewstate, je charge tel ou tel control)

Si je mets directement le code du chargement des usercontrol dans les procedures click boutons, ca marche parfaitement (l'usercontrol est chargé) seulement des que je choisis un article dans ma dropdownlist, ca crée un postback et mon usercontrol disparait (ce qui est normal, car la procedure loadUserControl n'est plus rappelée lors du chargement de la page).
Je cherchais donc un autre moyen de pouvoir charger mes user controls en utilisant le PreRender (j'appelais ma procedure dans le PreRender mais apparemment tu me dis que c pas possible).

Si je mets ma procedure dans le Init, le code s'executera avant celui associe au clic des boutons, donc ca ne marchera pas non plus.

Voila, j'espere que tu as compris ce que je voulais te dire et que c'est assez clair
Merci
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
23 nov. 2005 à 17:51
Je n'ai pas trop compris ce que tu fais avec ton viewstate mais moi ce que je ferais ...

c'est quand l'user clique sur le bouton j'ajoute mon UC dans la page, et je stocke quel UC j'ai ajouté dans mon viewstate ou session ou autre ...

ensuite dans le init, je regarderais quelles controles, j'ai rajouté précédemment et je les rajouterais à la page ...

Prenoms un cas simple :p on a 15 boutons sur la page, chaque boutons chargent différents UC qui contiennent tout sauf des boutons des dropdownlist avec autopostback par exemple ;) (sinon on va se melanger dans nos explications)

Au premier chargement de la page, dans le init je regarde si j'ai pas des controles à ajouté si oui je l'ai rajoute (comme c'est la premiere fois y'a rien à rajouter)

ensuite dans l'event click du bouton je rajoute mon controle dans la page, et dans la variable stockant les UC

si je reclick sur un bouton, dans le init je chargerais le premier controle, et dans l'event du bouton, je chargerais le bouton :)

si je joue avec un dropdownlist, ben ca va passer par le init de la page donc je rajoute les UC, puis aprés ca va passer par les loads des UC rajoutés donc tout est bon

Ca t'irait comme ca ?


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
23 nov. 2005 à 21:59
Merci pour tes explications !! J'ai essaye de suivre tes conseils (enfin ce que j'ai reussi a comprendre !!).
J'ai utilise les evenements init et event click pour afficher mes UC et l'affichage marche bien. Mes UC se charge bien suivant les choix de l'utilisateur et reste en place.

Maintenant j'ai un autre probleme au niveau de la dropdownlist qu'il y a dans mes UC. En fait, des que je choisis un element dans la dropdownlist, ca revient sans arret au 1er élément de la liste.
Quand j'essaye de mettre dans page_load de l'UC la condition If Not IsPostback...., je n'ai plus rien qui s'affiche dans la liste...

Je ne sais plus quoi faire la mais encore merci pour les conseils !!!!!
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 nov. 2005 à 22:20
hum ... :/

pour le drop tu fais bien un

if not page.ipostback then
mondrop.datasource = ...
mondrop.databind()
end if

et mondrop.enableviewstate=true ?

sinon teste dans une page bidon ton uc seul en le mettant classiquement dans la page et regarde deja si t'as bien le comportement souhaité ...


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
23 nov. 2005 à 22:51
J'ai bien fait ce que tu m'as dis avec if not page.ispostback dans page_load de l'UC et j'ai verifie les enableviewstate, ils sont bien a true...

Les dropdownlists ne se chargent pas car la condition du if not page.ispostback n'est jamais verifiee et le code a l'interieur ne s'excute pas mais je ne vois pas pourquoi ca fais ca ???? bizarre !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 nov. 2005 à 22:56
page.ispostback est toujours à true ? ou alors le page_load de ton uc n'arrive jamais ?


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
23 nov. 2005 à 23:09
J'ai trace l'execution par le debogueur, et la page_load de mon uc arrive bien mais le ispostback est toujours a true meme la 1ere fois. Du coup quand je fais le test if not ispostback, le test n'est jamais verifie et les drop ne peuvent pas se charger....

(mes enableviewstate sont tous a true aussi....)
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2005 à 00:07
et si tu met le debugger dans le init de la page c'est à dire la ou ton code prend la main, page.ispostback est dejà à true ?

si non regarde quand il change de true à false en pas à pas (il me semble que c'est pas possible mais bon ...)

Si oui t'es sur de bien relancer IE a chaque fois ? :p car la je pigerais vraiment pas, j'ai jamais eu un truc du genre :)


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
24 nov. 2005 à 00:33
alors je recapitule, je crois que je t'ai mal explique :)

Le chargement des UC quand on clik sur tel ou tel bouton marche impec grace a ce que tu m'as dit au debut.
Alors mon probleme qui reste a resoudre se situe au niveau des dropdownlists appartenant a l'UC qui ne s'affiche pas correctement lors du chargement de ce dernier

Dans ma page aspx et dans page_load, le ispostback passe bien de false a true.
Par contre dans le page_load des UC, le ispostback est toujours egal a true.
la propriete enableviewstate de mes dropdownlist est egale a true egalement.

Pour charger mes dropdownlist, je le fais dans le page_load de l'UC. Si je mets le code du genre
...
mondrop.datasource = ...
mondrop.databind()
....
sans le ispostback, mes dropdownlist s'affiche mais des que je selectionne un element de la liste, ca passe automatiquement au 1er element de la drop sans garder ma selection (alors que je voudrais que ca garde mes selections !!)

Si je mets le code
if not page.ipostback then
mondrop.datasource = ...
mondrop.databind()
end if
avec le postback, ca n'affiche rien du tout....

J'espere que j'ai ete clair cette fois !!!
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2005 à 00:41
ben vi suis-je bete c'est normal :p

quand tu fais un click sur ton bouton pour ajouter l'UC tu fais un postback puis tu vas donc la premiere fois que tu tente de charger les drop t'as deja fait un postback :)

créer donc une propriété "firstLoad" que tu enregistres dans le viewstate et au lieu de tester avec le page.ispostback tu tests avec le firstload :)


<HR>
Cyril - MVS - MCP ASP
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
24 nov. 2005 à 00:46
ok je vois, je vais essayer ce que tu m'as dit je te tiens au courant de toute maniere, j'espere que ca va marcher !!!

Encore merci pour tout !
0
sorcier_sly Messages postés 53 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 27 février 2006
24 nov. 2005 à 10:31
J'ai essaye ce que tu m'as dit, et ca marche presque !! seul souci j'ai encore un probleme et je comprend pas non plus d'ou ca vient !! ca devient galere !!!

Je t'explique, pour simplifier, j'ai deux boutons qui chargent 2 UC differentes.

Au debut du chargement de ma page aspx, rien n'est charge dans le placeholder.

Quand je click sur le 1er bouton, mon UC s'affiche bien et des que je fais mes selections dans ma dropdownlist, elles sont conservees (tout est ok !!).

Ensuite, je click sur le 2e bouton, du coup ca charge l autre UC (tout est ok !!!).
Par contre, quand je reclick sur le 1er bouton, mon uc contenant la dropdownlist se charge bien mais la j'ai un probleme dans ma dropdownlist.
En fait, la 1ere selection que je fais dans ma drop, ca repasse au 1ere élement de ma liste, puis quand je refais une selection dans ma drop ca garde bien mon choix.

Je comprends plus rien la.....
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2005 à 11:18
A mon avis, il faudrais que tu remettes tout à plat et regarder ce qui doit se passer et ce qui se passe réellement ... je vais guere pouvoir t'aider la :s


<HR>
Cyril - MVS - MCP ASP
0
Rejoignez-nous