Bonsoir,
J'ai une petite page web qui doit afficher plusieurs choses, et notamment un tableau. Au vu de sa grande taille, je veux que l'utilisateur puisse le cacher ou le montrer à volonté. Vu le peu de choses à faire, je décide d'utiliser des contrôles html classiques, avec des fonctions javascript qui changent le style css (la propriété display notamment). Jusque là, facile.
Le problème, c'est que si un Postback est généré sur cette page, les modifications de style effectuées sur mes contrôles sont perdues. Zut. Après quelques recherches, je me rends compte que forcément, vu que mes contrôles html ne sont pas enregistrés dans le viewstate, leur état n'est pas mémorisé et est réinitialisé à chaque postback. Je rajoute donc runat="server" et enableviewstate="true" dans mes balises, mais rien n'y fait. J'ai beau avoir cherché pendant un bout de temps, je n'ai pas trouvé de solution à mon problème.
Voici le code de ma page aspx:
Je pourrais faire mon bourrin : utiliser des contrôles asp et les bidouiller, mais bon, pour le peu que j'ai à faire avec, ça ferait un peu dégueu... Bon, si je n'ai pas d'autre solution, je le fais, mais bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Tournoi - statistiques</title> <script type="text/javascript" language="javascript"> function montrer_tableau() { document.getElementById('tableau').style.display='inline-table'; document.getElementById('montrer').style.display='none'; document.getElementById('cacher').style.display='inline'; } function cacher_tableau() { document.getElementById('tableau').style.display='none'; document.getElementById('montrer').style.display='inline'; document.getElementById('cacher').style.display='none'; } </script> </head> <body> <form id="form1" runat="server"> <div> <a href="#" id="montrer" onclick="montrer_tableau()" style="display:none" runat="server" enableviewstate="true">Montrer le tableau</a> <a href="#" id="cacher" onclick="cacher_tableau()" style="display:inline" runat="server" enableviewstate="true">Cacher le tableau</a> <div id="tableau" style="display:inline-table" runat="server" enableviewstate="true"> [Mon gros tableau ici] </div> <hr /> Détails : <asp:DropDownList ID="ddlClassts" runat="server" /> et <asp:DropDownList ID="ddlEpreuves" runat="server" /> <asp:Button ID="btnDetails" runat="server" Text="Voir" onclick="btnDetails_Click" /><br /> [Des trucs d affichage pas importants] </div> </form> </body> </html>
Donc, quelqu'un a-t-il une idée de pourquoi est-ce que mes contrôles html 'montrer' (<a>), 'cacher' (<a>) et 'tableau' (<div>) ne gardent pas leur état lors du Postback ?
Merci beaucoup !
Partager