SaveViewState lors des PostBack

Résolu
mesinscriptions Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 30 juillet 2004 - 28 juil. 2004 à 15:13
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 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?

Merci

11 réponses

mesinscriptions Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 30 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.
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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 :)

@+

Cyril
0
mesinscriptions Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 30 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.

thx
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mesinscriptions Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 30 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 ?

Un grand merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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 ?

merci

@+

Cyril
0
mesinscriptions Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 30 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.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
30 juil. 2004 à 22:58
bon ben tant pis, je voulais juste voir comment ca marchait :) au cas ou un jour j'en ai besoin :)

@+

Cyril
0
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
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.


<--St@iLeR-->
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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 :)

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
2 avril 2005 à 12:23
Oui ben tu te doutes que c'est ce que j'ai fait... y a un exemple sur
la msdn et j'ai essayé d'adapter à mon besoin... Mais voila, ca marche
pas.

J'ai même l'impression que je passe pas dans le loadpostdata. Bref il me manque des explications quoi.


<--St@iLeR-->
0
Rejoignez-nous