13. juni 2006 - 14:20Der er
6 kommentarer og 1 løsning
Problemer med usercontrol og viewstate
Hej
Jeg har en side hvor jeg loader en usercontrols ind dynamisk. problemet er så at viewstate ikke virker på usercontrollen, hvis jeg tilføjer usercontrollen som et element er der ikke noget problem. Kan det løses og hvis hvordan.
Her er lige et eksempel på hvordan jeg loader usercontrollen.
protected void Page_Load(object sender, EventArgs e) { if (Session["billedeupload_side"] != null) { loadusercontrol(); } else { Control c = Page.LoadControl("billedeupload/billedeupload.ascx"); c.EnableViewState = true; Panel1.Controls.Clear(); Panel1.Controls.Add(c); }
} protected void loadusercontrol() { Control c = Page.LoadControl((string)Session["billedeupload_side"]); Panel1.Controls.Clear(); Panel1.Controls.Add(c); }
det er egentlig kun det stykke hvor sessionen ikke har nogen værdi jeg bruger indtil videre.
Hvad mener du med at ViewState ikke virker? (Der gemmes ikke kontroller i ViewState, så hvis du tilføjer kontroller dynamisk - skal du gøre det hver gang). Mvh
Det der er mit problem er at jeg på min usercontrols som jeg tilføjer dynamisk er en custom controls og inde i den sætter jeg en værdi i viewstate for hvor langt controllen er nået i forløbet, men den husker ikke den værdi. Jeg har også prøvet på selve min usercontrol at sætte en viewstate og så se om den stadig var sat efter et postback, det var den ikke. Der er ikke noget problem med at få vist usercontrollen, den bliver loaded hver gang
Jeg har lavet en custom control hvor man uploader en zip fil med billeder i, så udpakker den billederne til en mappe på hosten når billederne er uploaded sætter jeg en viewstate værdi til true. Så kalder jeg en funktion der viser billederne og giver mulighed for at rette i dem. Så er der en gem knap, som resizer, navngiver og pladserer dem i den rette mappe, men det den her sidste del der ikke fungerer. Jeg tjekker ved CreateChildControls om værdien er sat til true eller false og loader den startbillede hvis den er sat til false og loader den del hvor jeg kan rette hvis den er sat til true
Som du kan se - sætter jeg en "viewstate property" til true når der klikkes på knappen, og jeg spørger på samme property i createchildcontrols.
Ovenstående fungerer helt fint, men der skal trykkes to gange på knappen før du kan se at værdien er skiftet, hvilket er klart, da CreateChildControls kører før eventhandleren. Er det noget tilsvarende du har - eller er det way off?
Hvis du benytter 2.0 kan du for øvrigt benytte controlstate, hvis det er en væsentlig tilstand der altid skal gemmes hvadente viewstate er slået til eller fra.
Den første løsning gav ikke noget andet resultat, men derimod løsningen med controlstate ser ud til at virke, jeg har ikke lagt den på min control endnu, men jeg har lavet nogle simple controls og de virker som de skal også.
Super - sig til hvis der bliver yderligere ballade. Mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
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.