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 GetSet _pageheading = value End SetEnd 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