Thursday, March 24, 2005

Programmatically Load User Controls

Programmatically Load User Controls


 This sample consists of 3 pages:

  • default.aspx -- the standard ASP.NET page
  • cbDefault.vb -- the codebehind page for default.aspx
  • ucHeading.ascx -- a usercontrol with a property called page heading.

default.aspx simply has a panel object as a placeholder, and references the code behind file.


<%@ Page EnableSessionState="false" explicit="true" strict="true" MaintainState="false" inherits="cbDefault" src="cbDefault.vb"%>
<body bgcolor="#FFFFFF" >
<asp:panel id="pnlHeading" runat="server" />



ucHeading has a single property called PageHeading. PageHeading is a string that is used to display the heading of the page for the web surfer.


<script runat="server">
Private _pageheading as String = ""
Public Property PageHeading As String
    Return _pageheading
End Get
    _pageheading = value
End Set
End Property


cdDefault.vb is the code behind file for default.aspx. It contains the meat of this demo. The logic of cbDefault.vb is:

  • Load the UserControl
  • Get the type of UserControl
  • Get access to the property "PageHeader"
  • Set the property "PageHeader"
  • Add the UserControl to the panel object on default.aspx


Option Strict On
Option Explicit On

Imports System
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class cbDefault : Inherits Page
Public pnlHeading as Panel

Public Sub Page_Load(Src As Object, E As EventArgs)
  ' Load the control
  Dim myUC as UserControl = LoadControl("ucHeading.ascx")

  ' Set the Usercontrol Type
  Dim ucType as Type = myUC.GetType()

  ' Get access to the property
  Dim ucPageHeadingProperty as PropertyInfo = ucType.GetProperty("PageHeading")

  ' Set the property
  ucPageHeadingProperty.SetValue(myUC,"Access a Usercontrol from Code Behind",Nothing)

  pnlHeading.Controls.Add ( myUC )
End Sub

End Class




Have a Nice Day
Ritesh Kumar Kesharwani
Software Professional
Cell  :  011-91-9845657636

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around

No comments: