Howto add a custom user control dynamically to an aspx webpage

Vergangene Woche brauchte ich eine ASPX-Seite der zur Laufzeit ein User Control hinzugefügt wird. Welches Usercontrol das sein sollte, würde anhand einer Auswahl aus einer Combobox durch den Anwender entschieden. Zunächst probierte ich das entsprechende Usercontrol wie folgt zu generieren:

WebControl myControl = new myControl();

Schnell musste ich feststellen, dass aber dann die Objekte innerhalb meines Usercontrols nicht geladen wurden (z.B. die Labels und die Literals). Da ich das Usercontrol innerhalb eines ASPxCallbackPanels verwendet habe, trat immer eine reference null exception auf. Nach kurzer Recherche im Internet fand ich dann heraus, dass zum Laden von Usercontrols eine spezielle Funktion verwendet werden sollte: Page.LoadControl Method Allerdings stellte sich erst Erfolg ein, nachdem ich die erste Überladung verwendet habe. Bei meinem ersten Versuch hatte ich mich für die zweite Überladung mit (Type, Object[]) entschieden, diese funktionierte aber leider nicht. Daher habe ich die erste Überladung mit dem Parameter stringverwendet. Da ich das Usercontrol entsprechend einer Auswahl aus einer Combobox lade, sieht die Aufrufzeile wie folgt aus:

// this.FillLookupViewControl() ist eine Liste aller per Reflection
// eingesammelten verfügbaren LookupViewControls
var lookupViewControl = this.LoadControl(String.Format("~/controls/LookupView/{0}.ascx", this.FillLookupViewControl()[lookupViewName].Name));

Anschließend muss das geladene Usercontrol nur noch der Seite oder dem Platzhalter hinzugefügt werden:

this.PlaceHolderLookupView.Controls.Add(lookupViewControl);

Das war's! Nun wird zur Laufzeit das Usercontrol auf der Webseite dargestellt, dass der Anwender in der Auswahlbox aussucht.

Related Articles

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.