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.
default.aspx
<%@ Page EnableSessionState="false" explicit="true" strict="true" MaintainState="false" inherits="cbDefault" src="cbDefault.vb"%>
<html>
<head>
<title></title>
</head>
<body bgcolor="#FFFFFF" >
<asp:panel id="pnlHeading" runat="server" />
</body>
</html>
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.
ucHeading.ascx
<script runat="server">
Private _pageheading as String = ""
Public Property PageHeading As String
Get
Return _pageheading
End Get
Set
_pageheading = value
End Set
End Property
</script>
<h1><%=_pageheading%></h1>
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
cbDefault.vb
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
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com