ASP.Net: Using a PlaceHolder to dynamically add a user control

by Heathesh 21. November 2010 20:27

In order to use a PlaceHolder to dynamically load user controls I'm going to start with a simple User Control I created called "HelloWorldUserControl". The HTML portion of the control was simple enough, I just created a literal that I wanted to populate using an Initialize command like so:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HelloWorldUserControl.ascx.cs"
    Inherits="PlaceHolderTest.HelloWorldUserControl" %>
    <asp:Literal ID="LiteralHelloWorld" runat="server" />

In the code behind of the control I just added my Initialize method like so:

        /// <summary>
        /// Initializes the control
        /// </summary>
        /// <param name="message"></param>
        public void Initialize(string message)
            LiteralHelloWorld.Text = message;

Simple enough, anything calling the Initialize method can pass in a string that will populate the Literal on the form with the text. Now I wanted to dynamically add this control to a Web Form. To do this I first created a Place Holder on my web form like so:

        <asp:PlaceHolder ID="PlaceHolderHelloWorld" runat="server" />

Easy enough so far. Next I wanted to populate this place holder with my user control and call the initialize method on the control. To do this I simply added the following code to my Page_Load event of my web form:

        /// <summary>
        /// Handles the page load event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
            //create the control, and call the initialize method
            HelloWorldUserControl helloWorldUserControl = (HelloWorldUserControl)Page.LoadControl("HelloWorldUserControl.ascx");
            helloWorldUserControl.Initialize("hello world!!!");

            //add the control to the place holder, and you're good to go!

As you can see I create an instance of my control in the code behind using the Page.LoadControl method, and then simply cast that returned object to my control type to have a usable object where I can call my Initialize method against. I then simply added my control to the place holder, and that was it!

Happy loading!

Tags: , , , ,

Development | .Net | Visual Studio 2010 | VS2010

Powered by BlogEngine.NET (with enhancements by Heathesh)
Theme by Mads Kristensen (with tweeks by Heathesh)


Microsoft Certified Professional

Microsoft Certified Technology Specialist

Answer Questions


Tag cloud


<<  September 2017  >>

View posts in large calendar