mesinscriptions
Messages postés5Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention30 juillet 2004
-
28 juil. 2004 à 15:13
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 2009
-
2 avril 2005 à 12:23
J'ai créé un controle composite afin de faire un arbre. J'ai donc trois classes : la classe arbre, la classe noeud et la classe collection de noeuds.
Mes noeuds possedent une checkbox. Mon probleme est que je n'arrive pas a stocker la nouvelle valeur de cette checkbox lors des postbacks.
J'ai fouiller dans la structure des controles et j'ai vu que c'etait la classe SaveViewState qui se chargeait de sauver tout ce qu'on avait mis dans les viewstates. Mais elle est appelée avant le rendu, donc tout ce que l'utilisateur peut modifier n'aura plus aucune influence.
Comment faire pour resauver le viewstate lors du postback?
mesinscriptions
Messages postés5Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention30 juillet 2004 29 juil. 2004 à 17:39
J'ai finalement trouvé. C'était bien avec IPostBackDataHandler.
Pour info, lors de la création des controles dans les feuilles, il faut leur donner des ID basés sur l'UniqueID du controle que l'on place dans la page aspx, dans ce cas-ci, l'arbre.
Dans la classe de l'arbre, on ajoute un LoadPostData qui va récupérer toutes les valeurs des controles ayant une ID comme ci-dessus. Il suffit ensuite de verifier si la valeur a ete modifiée et l'updater si c'est le cas.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 28 juil. 2004 à 19:01
j'ai pas tout à fait compris, le problème, mais si ca peut t'aider regarde cette source : http://www.aspfr.com/code.aspx?ID=24838, elle montre l'utilisation du viewstate
si ca t'aide pas, decris moi un peu plus le details, et met moi un peu de code stp :)
mesinscriptions
Messages postés5Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention30 juillet 2004 29 juil. 2004 à 10:11
La source que tu m'a montrée parle du viewstate et là, j'ai aucun probleme.
Je crée un controle composite dans lequel il y a une checkbox. Je peux, lors du OnInit ou OnLoad, specifier la valeur et la mettre dans un viewstate. Elle sera alors conservée a chaque postback comme le montre ton exemple.
Par contre, si la valeur est modifiée coté utilisateur, après le rendu, le viewstate ne sert plus a rien puisqu'il n'y a plus d'execution de code cote serveur.
Je pense avoir trouvé un debut de reponse avec le 'IPostBackDataHandler' mais j'ai des petits problemes pour l'utiliser.
Si tu pouvais m'eclairer.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 29 juil. 2004 à 12:33
j'ai un peu mieux compris ton problème mais pas tout à fait.
Tu as une page avec des Checkbox
l'utilisateur clique sur un bouton ? (postback)
et tu cherches à connaitre la valeur des Checkbox ?
si oui, tu n'as qu'a mettre dans la directive page l'attrbitut trace="true" et tu auras une collection d'objet qui pourrait surement t'aider, il me semble que c'est request.Params("IDduControl") mais je suis pas sur
@+
Cyril
Vous n’avez pas trouvé la réponse que vous recherchez ?
mesinscriptions
Messages postés5Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention30 juillet 2004 29 juil. 2004 à 14:52
Ce n'est pas tout a fait ca, ma page ne contient pas de check box.
En fait, comme je l'ai dit, j'ai construit un controle composite, c'est a dire que dans une classe .cs autre que mon code behind, je cree un controle dans lequel j'ajoute une checkbox, un label, un hyperlink et une textbox. L'hyperlink sert a deployer l'arbre, il effectue donc un postback. Apres ce postback, les valeurs que j'ai introduit en tant qu'utilisateur dans la textbox et la checkbox ne sont pas conservées.
Pour compliquer encore un peu le tout, mon controle se decompose en 3 classes, obligatoire pour creer un arbre.
Premierement, j'ai mon controle Arbre, c'est lui que je place dans ma page aspx, il contient les propriétés pour configurer l'affichage et une methode render. Ensuite, j'ai une classe Noeud, elle contient les informations a afficher et c'est celle-la qu'il faut updater. Et finalement, j'ai une classe CollectionNoeud afin de faciliter le voyage dans l'arbre.
Les proprietes et methodes que tu me dis d'utiliser n'existe pas dans mon controle. Ce que je dois faire justement, c'est les créer.
Vraisemblablement, je dois utiliser un IPostBackDataHandler mais je ne sais pas comment ca marche.
Si tu as deja travaillé avec cette interface, pourrais-tu m'expliquer comment elle fonctionne ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 29 juil. 2004 à 19:56
ok j'avais pas compris la question comme ca (faut dire aussi que je l'avais que vite fait survolé)
mais ca à l'air tres interessant :)
est-ce que tu as le droit de poster ton travail en tant que source sur aspfr.com ? car ca aiderait je pense beaucoup de monde, et moi je suis curieux de voir comment ca fonctionne :)
si ton patron ne veut pas que les sources du controles soyent diffusé :sad) tu pourrais me mettre les liens qui t'on servit pour resoudre ton problème ?
mesinscriptions
Messages postés5Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention30 juillet 2004 30 juil. 2004 à 17:00
Ca va pas etre possible de diffuser les sources.
Pour la structure de l'arbre, je me suis plus ou moins basé sur le TreeWeb d'un certain iiuga, je sais plus trop bien l'adresse mais si tu fais une recherche avec ces deux mots, tu as toutes les chances de tomber dessus.
Par contre, il ne traite pas du tout la conservation des parametres lors des postbacks.
Toute l'info la-dessus, je l'ai principalement trouvée sur msdn.microsoft.com, dans les rubriques concernant les IPostBackDataHandler et sur differents sites (beaucoup) dont je n'ai pas noté les liens et que j'ai obtenu apres une bonne dizaine de recherche Google avec IPostBackDataHandler, compositecontrol,...
Desole donc de ne pas pouvoir te donner grand chose comme reference. Par contre, si tu as une question sur le fonctionnement, tu peux toujours me mailer, je pense avoir enfin compris le principe.
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 2 avril 2005 à 01:12
Ca fait plusieurs fois cette semaine que je vois ceci : IPostBackDataHandler.
Apparemment c'est génial, puisqu'on est pas obligé de valider la page
pour récupérer des variables... Si quelqu'un à un tutorial la dessus je
suis preneur.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 2 avril 2005 à 01:16
j'ai jamais vu de tuto la dessus, mais bon le mieux c'est de tester toi
meme, tu fais un composant et tu implementes IpostbackDataHandler, puis
un petit tour sur le msdn, et tu trouveras ton bonnheur :)