Custom server controls verkar ju vara ett bra sätt att bygga upp web-prylar som ska användas på flera olika siter, och kunna uppdateras oberoende av varandra. Max, Andreas, Ah sorry.. Menar du att man ska göra så här nånting?: Är Parent namnet på en kontroll på din webbsida? Eller är det så att du försöker lägga till den på sidan och isf borde använda <b>Me</b> istället ? =) Så enkelt var det :).ladda custom server control dynamiskt..
Jag skulle vilja ha en sorts generell sida som laddar ett antal Custom server controls. Vilka controls som ska användas i den generella sidan vill jag att man lätt ska kunna definiera genom att t.ex. ha en sorts siddefinition i en databas-tabell, där posterna är namnen på de controls som ska ingå i sidan.
Min fråga är:
Hur gör jag för att i den generella sidan anropa/hämta/ladda de controls som är definierade i databas-tabellen?
T.ex. Jag har i min generella sida med hjälp av databas-tabellen tagit reda på att 'Customcontrol1' och 'Customcontrol3' ska laddas. Men vad gör jag sedan??
Hoppas jag inte varit påfrestande övertydlig i min framställning av problemet.Sv: ladda custom server control dynamiskt..
Du använder <b>LoadControl</b> metoden på <b>Page</b> klassen (den klass alla dina ASP.NET sidor direkt eller indirekt ärver ifrån) för att ladda din kontroll. När du väl har den, så kan du lägga till den i en valfri <b>Controls</b> collection - dvs. Page klassen har en Controls collection som du använder om du vill lägga den direkt på sidan, sen har många andra kontroller så som <b>PlaceHolder</b> och </b>Panel</b> också egna Controls collection. Vilken collection du lägger den i beror på var i din design du vill stoppa in din kontroll.Sv:ladda custom server control dynamiskt..
Är du säker på det?
Efter att ha grävt en del på internet har jag fått intrycket av att LoadControl enbart fungerar med så kallade User Controls.
Ex. LoadControl("Menu2.ascx").
Det verkar tyvärr inte som om motsvarande fungerar med Custom Server Controls...eller?Sv: ladda custom server control dynamiskt..
Vad du då för göra är att skapa objekt av de olika kontrollerna och sen lägga till dem. Du kan dynamiskt skapa instanser av kontroller / klasser utifrån deras namn med hjälp av t.ex <b>Activator.CreateInstance</b> metoden eller <b>Type.GetType()</b> beroende på din situation. Du hittrar Activator i <b>System.Reflection</b>Sv:ladda custom server control dynamiskt..
<code>
Dim a As System.Reflection.Assembly = System.Reflection.Assembly.Load("myControls")
Dim t As Type = a.GetType("myControls.Unproc_New")
Dim c As Control = CType(Activator.CreateInstance(t), Control)
Parent.Controls.Add(c)
</code>
När jag provar detta får jag:
<b>Object reference not set to an instance of an object.</b> Fattar ingenting.Sv:ladda custom server control dynamiskt..
Sv: ladda custom server control dynamiskt..
Stort tack till alla inblandade.