Ottiene un valore che indica se i controlli figli del controllo server sono stati creati.
Assembly: System.Web (in System.Web.dll)
Protected Property ChildControlsCreated As Boolean Get Set
protected bool ChildControlsCreated { get; set; }
protected: property bool ChildControlsCreated { bool get (); void set (bool value); }
member ChildControlsCreated : bool with get, set
Valore proprietà
Tipo: System.Booleantrue se i controlli figli sono stati creati; in caso contrario, false.
Nell'esempio riportato di seguito viene illustrato un override del metodo OnDataBinding di un controllo Repeater personalizzato. Per fare in modo che i controlli figlio non vengano creati fino a quando non si verifica nuovamente l'associazione dati, la proprietà ChildControlsCreated viene impostata su true dopo che gli oggetti RepeaterItem sono stati creati e aggiunti all'oggetto ControlCollection del controllo.
Imports System Imports System.Collections Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Namespace TemplateControlSamplesVB <ParseChildren(True)> _ Public Class CustomRepeaterVB : Inherits Repeater ' Override to prevent LiteralControls from being added as children. Protected Overrides Sub AddParsedSubObject(ByVal O As Object) End Sub ' Override to create repeated items. Protected Overrides Sub CreateChildControls() Dim O As Object = ViewState("NumItems") If Not (O Is Nothing) Then ' Clear any existing child controls. Controls.Clear() Dim i As Integer Dim NumItems As Integer = CInt(O) For i = 0 To NumItems - 1 ' Create an item. Dim Item As RepeaterItem = New RepeaterItem(i, ListItemType.Item) ' Initialize the item from the template. ItemTemplate.InstantiateIn(Item) ' Add the item to the ControlCollection. Controls.Add(Item) Next End If End Sub ' Override to create the repeated items from the DataSource. Protected Overrides Sub OnDataBinding(ByVal E As EventArgs) MyBase.OnDataBinding(E) If Not DataSource Is Nothing Then ' Iterate over the DataSource, creating a new item for each data item. Dim DataEnum As IEnumerator = DataSource.GetEnumerator() Dim i As Integer = 0 Do While (DataEnum.MoveNext()) ' Create an item. Dim Item As RepeaterItem = New RepeaterItem(i, ListItemType.Item) ' Initialize the item from the template. ItemTemplate.InstantiateIn(Item) ' Add the item to the ControlCollection. Controls.Add(Item) i = i + 1 Loop ' Prevent child controls from being created again. ChildControlsCreated = True ' Store the number of items created in view state for postback scenarios. ViewState("NumItems") = i End If End Sub End Class End Namespace
using System; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace TemplateControlSamples { [ParseChildren(true)] public class CustomRepeater : Repeater { // Override to prevent LiteralControls from being added as children. protected override void AddParsedSubObject(object o) { } // Override to create repeated items. protected override void CreateChildControls() { object o = ViewState["NumItems"]; if (o != null) { // Clear any existing child controls. Controls.Clear(); int numItems = (int)o; for (int i = 0; i < numItems; i++) { // Create an item. RepeaterItem item = new RepeaterItem(i, ListItemType.Item); // Initialize the item from the template. ItemTemplate.InstantiateIn(item); // Add the item to the ControlCollection. Controls.Add(item); } } } // Override to create the repeated items from the DataSource. protected override void OnDataBinding(EventArgs e) { base.OnDataBinding(e); if (DataSource != null) { // Iterate over an ICollection DataSource, creating a new item for each data item. IEnumerator dataEnum = ((ICollection)base.DataSource).GetEnumerator(); int i = 0; while (dataEnum.MoveNext()) { // Create an item. RepeaterItem item = new RepeaterItem(i, ListItemType.Item); item.DataItem = dataEnum.Current; // Initialize the item from the template. ItemTemplate.InstantiateIn(this); // Add the item to the ControlCollection. Controls.Add(item); i++; } // Prevent child controls from being created again. ChildControlsCreated = true; // Store the number of items created in view state for postback scenarios. ViewState["NumItems"] = i; } } } }
Nell'esempio riportato di seguito viene illustrato come utilizzare il repeater personalizzato in una pagina Web.
<%@ Page Language="VB" %> <%@ Register TagPrefix="Samples" Namespace="TemplateControlSamplesVB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Dim a As New ArrayList() a.Add("data item 1") a.Add("data item 2") Repeater1.DataSource = a Page.DataBind() End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ChildControlsCreated Example</title> </head> <body> <form id="form1" runat="server"> <div> <Samples:CustomRepeaterVB ID="Repeater1" runat="server"> <ItemTemplate><%# Container.DataItem %> <br /></ItemTemplate> </Samples:CustomRepeaterVB> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Register TagPrefix="Samples" Namespace="TemplateControlSamples" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { ArrayList a = new ArrayList(); a.Add("data item 1"); a.Add("data item 2"); Repeater1.DataSource = a; Page.DataBind(); } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ChildControlsCreated Example</title> </head> <body> <form id="form1" runat="server"> <div> <Samples:CustomRepeater ID="Repeater1" runat="server"> <ItemTemplate><%# Container.DataItem %> <br /></ItemTemplate> </Samples:CustomRepeater> </div> </form> </body> </html>
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.