CompositeDataBoundControl.CreateChildControls Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea la gerarchia dei controlli utilizzata per eseguire il rendering di un controllo composito associato a dati.
Overload
CreateChildControls() |
Crea la gerarchia dei controlli utilizzata per eseguire il rendering di un controllo composito associato a dati in base ai valori memorizzati nello stato di visualizzazione. |
CreateChildControls(IEnumerable, Boolean) |
Quando viene sottoposto a override in una classe astratta, crea la gerarchia dei controlli utilizzata per eseguire il rendering del controllo composito associato a dati in base ai valori dell'origine dati specificata. |
CreateChildControls()
Crea la gerarchia dei controlli utilizzata per eseguire il rendering di un controllo composito associato a dati in base ai valori memorizzati nello stato di visualizzazione.
protected public:
override void CreateChildControls();
protected internal override void CreateChildControls ();
override this.CreateChildControls : unit -> unit
Protected Friend Overrides Sub CreateChildControls ()
Commenti
Il CreateChildControls() metodo è un metodo helper usato dalle classi che derivano dalla CompositeDataBoundControl classe per creare la gerarchia di controllo per un controllo associato a dati composito. Questo overload del metodo crea la gerarchia di controllo in base ai valori dallo stato di visualizzazione, anziché direttamente dall'origine dati.
Vedi anche
Si applica a
CreateChildControls(IEnumerable, Boolean)
Quando viene sottoposto a override in una classe astratta, crea la gerarchia dei controlli utilizzata per eseguire il rendering del controllo composito associato a dati in base ai valori dell'origine dati specificata.
protected:
abstract int CreateChildControls(System::Collections::IEnumerable ^ dataSource, bool dataBinding);
protected abstract int CreateChildControls (System.Collections.IEnumerable dataSource, bool dataBinding);
override this.CreateChildControls : System.Collections.IEnumerable * bool -> int
Protected MustOverride Function CreateChildControls (dataSource As IEnumerable, dataBinding As Boolean) As Integer
Parametri
- dataSource
- IEnumerable
Oggetto IEnumerable che contiene i valori da associare al controllo.
- dataBinding
- Boolean
true
per indicare che il metodo CreateChildControls(IEnumerable, Boolean) viene chiamato durante l'associazione dati; in caso contrario, false
.
Restituisce
Il numero di elementi creato mediante il metodo CreateChildControls(IEnumerable, Boolean).
Esempio
Nell'esempio di codice seguente viene illustrato come eseguire l'override del CreateChildControls(IEnumerable, Boolean) metodo in un controllo personalizzato per creare la gerarchia di controllo.
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>");
}
}
}
}
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
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
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
End Class
End Namespace
Commenti
Il CreateChildControls() metodo è un metodo helper usato dalle classi che derivano dalla CompositeDataBoundControl classe per creare la gerarchia di controllo per un controllo associato a dati composito. Quando si estende la classe, è necessario eseguire l'override del CompositeDataBoundControlCreateChildControls() metodo per creare una gerarchia di controllo personalizzata. Per altre informazioni sulla creazione di un controllo composito, vedere Sviluppo di controlli server personalizzati ASP.NET.