Bonjour,
Je suis en train de développer une petite application qui permet de saisir des données dans un tableau de x lignes sur y colonnes.
En fonction de certains paramètres, un tableau n'a pas le même nombre de colonnes et de lignes.
L'utilisateur, peut, sur un tableau, soit enregistrer les données saisies, soit changer les paramètres pour afficher un tableau différent.
Pour bénéficier des avantages du viewstate et en respectant les consignes sur la création dynamique de contrôles, je crée la structure de mon tableau (lignes, cellules, texbox et cie) dans l'init de ma page en fonction des paramètres en cours.
Les propriétés des contrôles (cssclass, contenu des cellules ou des textbox, visibilités, etc) sont initialisées qu'une seule fois par changement de tableau, dans le load de la page, ce qui assure leur enregistrement dans le viewstate.
Par la suite, en fonction des options d'affichage de l'utilisateur ou des traitement effectués dans la page, je modifie mes contrôles dans les méthodes associés aux différents boutons de la page.
Jusque là pas de soucis, ça marche nickel (mis à part un viewstate monumental...)...
En revanche, je me retrouve devant une situation assez incongrue. Lors d'un changement de tableau, toutes les propriétés et les valeurs du tableau doivent être réinitialisées (normal, ce n'est plus le même tableau).
Dans ma petite tête de développeur, étant donné que tous les ID de mes contrôles changeaient, je pensais que le viewstate du précédent tableau serait effacé. Il n'en est rien !
Résultat des courses, si je ne réinitialise pas toutes les propriétés de mes contrôles, je me retrouve avec les propriétés des contrôles du tableau précédent. Ce qui, vous vous en doutez, ne m'arrange pas trop...
Je vois quelques solutions :
- probablement au niveau de l'init, empêcher l'application/chargement du viewstate sur mon tableau lors d'un changement de tableau. Malgré plusieurs heures de recherche, je n'ai pas trouvé comment faire.
- au niveau du load, réinitialiser manuellement toutes les propriétés des contrôles modifiés improprement par l'application du viewstate du précédent tableau. C'est un peu chiant à faire, vu que je modifie beaucoup de propriétés et que je risque d'en oublier (lignes, cellules, textbox, etc...).
- Faire un server.redirect sur ma page pour virer artificiellement le viewstate. Pas très pratique puisque je vais perdre des informations dont j'ai besoin.
Avez-vous une idée pour empêcher l'application du viewstate de manière conditionnelle (sans le désactiver, c'est quand même utile cette petite bête) ou un moyen pour réinitialiser les propriétés d'un contrôle efficacement (sans perdre son ID pour autant) ?
Merci d'avance de votre aide.
Partager