17. september 2010 - 12:46Der er
6 kommentarer og 2 løsninger
viewstate... hvordan?
Hvordan bruger jeg viewstate? har prøvet at lege lidt med det men kan ikke få det til at fungere. kan ikke se i eksemplerne på nettet hvad det er der skal stå som index i ViewState["Hvad skal der stå her"]
Hvergang jeg vælger en dato i min Ajax kalender control skal den addes til mit panel (i en textbox). intet kommer frem i mit panel når jeg bruger dette kode:
SearchCriteriaPanel = (Panel)ViewState["SearchCriteriaPanel"]; TextBox agencytextbox = new TextBox();
Du kan gemme værdier i ViewState indenfor samme side.
Men for at opdatere en textbox skal du jo lave et postback. Enten via et AJAX Update Panel eller hele siden igen.
Forstår dog ikke helt hvorfor du vil bruge viewstate til det manuelt? De fleste kalender kontroller laver jo automatisk et postback. Og når det sker kan du jo køre din C# kode og tilføje kalenderens værdi til din tekstboks.
I hvilket event tilføjer du din textbox? Kalenderens eventhandler? Det seneste event hvor du dynamisk kan tilføje controls er PageLoad - der skal de tilføjes ved hver postback, for at være synlige i næste ombæring.
De dynamiske kontrollers tilstand (fx værdien i teksboksen) bliver automatisk bevaret af systemet i ViewState. Men selve testboksen skal tilføjes ved hver PostBack.
Hvis man af en eller anden grund vil gemme noget information med page scope fremfor session eller application scope, så er viewstate vel lige til højrebenet.
Syntaxen er lige ud af landevejen:
ViewState[key] = ditobj;
og
ditobj = (DinType)ViewState[key];
Key er helt valgfri - ligesom med Session og Application.
Og som du har fundet ud af skal man have styr på postback, fordi ellers går det totalt i kage.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.