Imports System Imports System.Web Imports System.Web.UI Imports System.Collections Namespace myControls Public Class DataBoundTemplate Inherits Control Private _dataSource As IEnumerable Private _itemTemplate As ITemplate Public Property DataSource As IEnumerable Get Return _dataSource End Get Set _dataSource = Value End Set End Property Protected Overrides Sub OnDataBinding( e As EventArgs ) Dim objDataEnum As IEnumerator Dim objItem As DataBoundTemplateItem If Not DataSource Is Nothing Controls.Clear() objDataEnum = DataSource.GetEnumerator() While ( objDataEnum.MoveNext() ) objItem = New DataBoundTemplateItem( objDataEnum.Current ) ItemTemplate.InstantiateIn( objItem ) Controls.Add( objItem ) End While End If End Sub _ Public Property ItemTemplate As ITemplate Get Return _itemTemplate End Get Set _itemTemplate = value End Set End Property End Class Public Class DataBoundTemplateItem Inherits Control Implements INamingContainer Private _DataItem As Object Public Sub New( DataItem As Object ) MyBase.New() _dataItem = DataItem End Sub Public ReadOnly Property DataItem As Object Get Return _dataItem End Get End Property End Class End Namespace