When overridden in an abstract class, creates the control hierarchy that is used to render the composite data-bound control based on the values from the specified data source.
Assembly: System.Web (in System.Web.dll)
Protected MustOverride Function CreateChildControls ( _ dataSource As IEnumerable, _ dataBinding As Boolean _ ) As Integer
protected abstract int CreateChildControls( IEnumerable dataSource, bool dataBinding )
protected: virtual int CreateChildControls( IEnumerable^ dataSource, bool dataBinding ) abstract
abstract CreateChildControls : dataSource:IEnumerable * dataBinding:bool -> int
Parameters
- dataSource
- Type: System.Collections.IEnumerable
An IEnumerable that contains the values to bind to the control.
- dataBinding
- Type: System.Boolean
true to indicate that the CreateChildControls(IEnumerable, Boolean) is called during data binding; otherwise, false.
Return Value
Type: System.Int32The number of items created by the CreateChildControls(IEnumerable, Boolean).
The CreateChildControls() method is a helper method that is used by classes that derive from the CompositeDataBoundControl class to create the control hierarchy for a composite data-bound control. When extending the CompositeDataBoundControl class, you must override the CreateChildControls() method to create your own control hierarchy. For more information on creating a composite control, see Developing Custom ASP.NET Server Controls.
The following code example demonstrates how to override the CreateChildControls(IEnumerable, Boolean) method in a custom control to create the control hierarchy.
Imports System Imports System.Collections Imports System.Data.Common Imports System.Web.UI Imports System.Web.UI.WebControls Namespace Samples.AspNet.VB Public Class SimpleSpreadsheetControl Inherits CompositeDataBoundControl Protected table As New Table() Public Overridable ReadOnly Property Rows() As TableRowCollection Get Return table.Rows End Get End Property Protected Overrides Function CreateChildControls(ByVal dataSource As IEnumerable, ByVal dataBinding As Boolean) As Integer Dim count As Integer = 0 ' If dataSource is not Nothing, iterate through it and ' extract each element from it as a row, then ' create a SimpleSpreadsheetRow and add it to the ' rows collection. If Not (dataSource Is Nothing) Then Dim row As SimpleSpreadsheetRow Dim e As IEnumerator = dataSource.GetEnumerator() While e.MoveNext() Dim datarow As Object = e.Current row = New SimpleSpreadsheetRow(count, datarow) Me.Rows.Add(row) count += 1 End While Controls.Add(table) End If Return count End Function 'CreateChildControls End Class 'SimpleSpreadsheetControl Public Class SimpleSpreadsheetRow Inherits TableRow Implements IDataItemContainer Private dataObj As Object Private _itemIndex As Integer Public Sub New(ByVal itemIndex As Integer, ByVal o As Object) dataObj = o _itemIndex = itemIndex End Sub 'New Public Overridable ReadOnly Property Data() As Object Get Return dataObj End Get End Property ReadOnly Property DataItem() As Object Implements IDataItemContainer.DataItem Get Return Data End Get End Property ReadOnly Property DataItemIndex() As Integer Implements IDataItemContainer.DataItemIndex Get Return _itemIndex End Get End Property ReadOnly Property DisplayIndex() As Integer Implements IDataItemContainer.DisplayIndex Get Return _itemIndex End Get End Property Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter) If Not (Data Is Nothing) Then If TypeOf Data Is System.Data.Common.DbDataRecord Then Dim temp As DbDataRecord = CType(Data, DbDataRecord) Dim i As Integer While i < temp.FieldCount writer.Write("<TD>") writer.Write(temp.GetValue(i).ToString()) writer.Write("</TD>") i += 1 End While Else writer.Write(("<TD>" + Data.ToString() + "</TD>")) End If Else writer.Write("<TD>This is a test</TD>") End If End Sub 'RenderContents End Class 'SimpleSpreadsheetRow End Namespace
using System; using System.Collections; using System.Data.Common; using System.Web.UI; using System.Web.UI.WebControls; namespace Samples.AspNet.CS { public class SimpleSpreadsheetControl : CompositeDataBoundControl { protected Table table = new Table(); public virtual TableRowCollection Rows { get { return table.Rows; } } protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding) { int count = 0; // If dataSource is not null, iterate through it and // extract each element from it as a row, then // create a SimpleSpreadsheetRow and add it to the // rows collection. if (dataSource != null) { SimpleSpreadsheetRow row; IEnumerator e = dataSource.GetEnumerator(); while (e.MoveNext()) { object datarow = e.Current; row = new SimpleSpreadsheetRow(count, datarow); this.Rows.Add(row); ++count; } Controls.Add(table); } return count; } } // // public class SimpleSpreadsheetRow : TableRow, IDataItemContainer { private object data; private int _itemIndex; public SimpleSpreadsheetRow(int itemIndex, object o) { data = o; _itemIndex = itemIndex; } public virtual object Data { get { return data; } } object IDataItemContainer.DataItem { get { return Data; } } int IDataItemContainer.DataItemIndex { get { return _itemIndex; } } int IDataItemContainer.DisplayIndex { get { return _itemIndex; } } protected override void RenderContents(HtmlTextWriter writer) { if (Data != null) { if (Data is System.Data.Common.DbDataRecord) { DbDataRecord temp = (DbDataRecord)Data; for (int i = 0; i < temp.FieldCount; ++i) { writer.Write("<TD>"); writer.Write(temp.GetValue(i).ToString()); writer.Write("</TD>"); } } else writer.Write("<TD>" + Data.ToString() + "</TD>"); } else writer.Write("<TD>This is a test</TD>"); } } }
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.