webForumDet fria alternativet

Lägga till control i placeholder i importerad control

.NET

7 svar · 443 visningar · startad av pirajan

Medlem sedan apr. 2001246 inlägg
Frågan#1

Hej!

Jag undrar om man på något sätt kan lägga till en control i en placeholder i en importerad control.

Alltså:
default.aspx
import.ascx
toplaceholder.ascx

i default lägger jag till import.ascx dynamiskt i en placeholder. Kan jag då i runtime lägga till toplaceholder.ascx i en placeholder i import.ascx?

Någon som förstår?

Medlem sedan apr. 20012 266 inlägg
#2

Har för mig att det var så här:

placeholder.Controls.Add(Page.LoadControl("import.ascx"));
Medlem sedan apr. 2001246 inlägg
#3

Jo så långt är jag med, men jag har ännu inte lyckats importera båda kontrollerna (ena till den andra) dynamiskt. Någon som har en idé? Alltså:

Default.aspx importerar import.ascx till en placeholder.
Default.aspx importerar sedan toplaceholder.ascx till en placeholder inuti import.ascx.

Någon som har ngt förslag?

Medlem sedan apr. 20012 266 inlägg
#4

Den andra funktioner bör du lättast kunna lägga i import.ascx eftersom det är där placeholdern finns. Annars kan du göra Placeholdern i import.ascx public och kan då kommas åt via default.aspx.

Medlem sedan apr. 2001246 inlägg
#5

Ok!
Jag testade att deklarera min placeholder i import.ascx codebehind, men får det inte att fungera... får hela tiden:Object reference not set to an instance of an object.

var ska jag deklarera min placeholder någon stans?

Medlem sedan mars 200174 inlägg
#6

Om du nu vill att default.aspx skall hantera detta (jag tycker också att import borde sköta detta själv), så skulle jag gjort en public metod i import.ascx tex LoadPlaceHolder().

I default.aspx gör du en findcontrol för att hitta import-kontrollen och kör dess metod

Control c = Page.FindControl("myimportcontrol")
if (c != null) ((MyImportControl)c).LoadPlaceHolder()

Spontant tror jag detta skulle fungera.

Medlem sedan apr. 2001246 inlägg
#7

Har suttit ett tag och försökt, men det fungerar inte... Någon som har någon annan lösning?

Medlem sedan apr. 20012 266 inlägg
#8

Så här:
import laddas in av huvudsidan med den kod jag skrev i det andra inlägget i denna tråd. Därefter skapar du en placeholder i import och i denna lägger du på samma sätt in toplaceholder som med import fast denna gång i imports placeholder.

Alternativt gör du placeholden i import public och sedan gör något liknande nedan:

Din .aspx sida:

ImportKontrollensClassNamn control = (ImportKontrollensClassNamn )Page.LoadControl("import.ascx");
control.PlaceHolderIImportKontrollen.Controls.Add(Page.LoadControl("toplaceholder.ascx"));
placeholder.Controls.Add(control);
260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)