style.display der sættes i javascript bliver overstyrt af property tidligere sat i codebehind.
Jeg har et panel der bliver vist ved hjælp af javascript når der klikkes på en knap:function ShowHide(id) {
var el = $get(id);
if (el.style.display == 'none') {
el.style.display = 'block';
}
else {
el.style.display = 'none';
}
}
I panelet er der en dropdownliste, der hvis man vælger et bestemt element giver mulighed for at indtaste noget i nogle felter. Ud over disse er der en 'annuller' og en 'gem' knap. Annuller knappen bruger igen ShowHide til at skjule feltet (da det er unødvendig at lave et postback bare for at skjule panelet).
For at vise/skjule de ekstra felter bliver der lavet et postback når man vælger noget i dropdownlisten, og for at panelet stadig skal vises har jeg tilføjet følgende i dette metodekald:
panelEdit.Style[HtmlTextWriterStyle.Display] = "block";
Scenariet er som følger:
1. Man klikker på knappen (panelet vises)
2. Man vælger noget i dropdownlisten (postback-event udføres)
3. Man klikker Annuller (panelet skjules)
Problemet kommer nu:
4. Man laver noget andet der forårsager et postback på siden og vupti... så vises panelet igen. Javascript metoden bliver IKKE kaldet. Der bliver heller ikke gjort noget ved panelet properties her.
Jeg har selv resoneret mig frem til at det nok er ViewState der driller. Når jeg kalder ShowHide i javascript har dette jo ikke nogen påvirkning på ViewState, men når man sætter en style property i codebehind, så har den vel...?? Eller er det forkert?
Jeg har uanset ikke fundet nogen løsning...