22. juni 2009 - 14:39
Der er
6 kommentarer
Differentiering af usercontrols
Hej, Jeg har brug for at kunne differentiere hvilken usercontrol der skal vises afhængig af en variabel. Jeg har skitseret mit kode herunder: <% int i = 2; switch (i) { case 1: %> <uc1:MyUserControl ID="MyUserControl1" runat="server" /> <% break; case 2: %> <uc1:MyUserControl ID="MyUserControl2" runat="server" /> <% break; case 3: %> <uc1:MyUserControl ID="MyUserControl3" runat="server" /> <% break; } %> I ovenstående tilfælde er hensigten kun at indsætte MyUserControl2. Umiddelbart er det også det der sker hvis man kigger på outputtet, men bagved bliver pageLoad event'et fyret på alle 3 usercontrols. Kan det virkelig passe? og i så fald, hvordan kan jeg undgå det?
Annonceindlæg fra COMM2IG
Her er en måde at gøre det på: I din markup skriver du: <asp:PlaceHolder runat="server" ID="myPlaceHolder" /> I din kode, i Page_Load eventet, skriver du: int i = 2; myPlaceHolder.Controls.Clear(); switch(i) case 1: myPlaceHolder.Controls.Add(new MyUserControl1()); break; case 2: myPlaceHolder.Controls.Add(new MyUserControl2()) break; case 3: myPlaceHolder.Controls.Add(new MyUserControl3()) breka;
Det hjælper på at pageLoad kun bliver kaldt på den korrekte usercontrol, men til gengæld er den ikke synlig på sitet?
Ok, prøv dette i page_load i stedet for: int i = 2; Control controlToLoad; switch(i) { case 1: controlToLoad = LoadControl("MyUserControl.ascx"); break; case 2: controlToLoad = LoadControl("MyUserControl.ascx"); break; case 3: controlToLoad = LoadControl("MyUserControl.ascx"); break; } myPlaceHolder.Controls.Add(controlToLoad);
Nej det giver samme resultat - pageLoad i usercontrol kaldes, men indholdet bliver ikke rendered.
Virker fint hos mig! Kan jeg se noget kode?
Det virker også nu - jeg troede bare at jeg kunne skrive koden i mit ascx-fil...som her: <asp:PlaceHolder ID="myPlaceHolder" runat="server" /> <% myPlaceHolder.Controls.Add(LoadControl("MyUserControl.ascx")); %> Men det skal åbenbart ligge i pageLoad
Kurser inden for grundlæggende programmering