Avatar billede jtofte Nybegynder
13. juni 2006 - 14:20 Der 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.
Avatar billede snepnet Nybegynder
13. juni 2006 - 17:13 #1
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
Avatar billede jtofte Nybegynder
13. juni 2006 - 18:33 #2
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
Avatar billede snepnet Nybegynder
14. juni 2006 - 10:47 #3
På hvilket tidspunkt i forløbet sætter du den værdi? (ved hvilken hændelse)
Mvh
Avatar billede jtofte Nybegynder
14. juni 2006 - 12:38 #4
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
Avatar billede snepnet Nybegynder
15. juni 2006 - 13:36 #5
Ved ikke om det helt harmonerer med det du har, men hvis du har noget i stil med følgende kan du måske bruge det:

public class TheFirstControl : Control, INamingContainer
{
    protected bool IsReadingViewState
    {
        get { return (object)ViewState["IsReadingViewState"] != null ? (bool)ViewState["IsReadingViewState"] : false; }
        set { ViewState["IsReadingViewState"] = value; }
    }

    protected override void CreateChildControls()
    {
        Button btn = new Button();
        btn.Text = IsReadingViewState.ToString();
        btn.Click += new EventHandler(btn_Click);
        Controls.Add(btn);
        base.CreateChildControls();
    }

    void btn_Click(object sender, EventArgs e)
    {
        IsReadingViewState = 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.

Mvh
Avatar billede jtofte Nybegynder
15. juni 2006 - 15:35 #6
Hej snepnet

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å.

Tak for hjælpen smid et svar.
Avatar billede snepnet Nybegynder
15. juni 2006 - 17:29 #7
Super - sig til hvis der bliver yderligere ballade.
Mvh
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester