Control.NamingContainer Control.NamingContainer Control.NamingContainer Control.NamingContainer Property

Definición

Obtiene una referencia al contenedor de nomenclatura del control de servidor, que crea un espacio de nombres único para diferenciar los distintos controles de servidor que tienen el mismo valor para la propiedad ID.Gets a reference to the server control's naming container, which creates a unique namespace for differentiating between server controls with the same ID property value.

public:
 virtual property System::Web::UI::Control ^ NamingContainer { System::Web::UI::Control ^ get(); };
[System.ComponentModel.Bindable(false)]
[System.ComponentModel.Browsable(false)]
public virtual System.Web.UI.Control NamingContainer { get; }
member this.NamingContainer : System.Web.UI.Control
Public Overridable ReadOnly Property NamingContainer As Control

Valor de propiedad

Contenedor de nomenclatura del control de servidor.The server control's naming container.

Ejemplos

El ejemplo siguiente se muestra cómo utilizar el NamingContainer propiedad.The following example demonstrates using the NamingContainer property.

<% @ Import Namespace = "System.Data"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>
            Control NamingContainer Example
         </title>
<script language="C#" runat="server">
      // Build the DataSource.
      ICollection CreateDataSource()
      {
         DataTable myDataTable = new DataTable();
         DataRow myDataRow;
         myDataTable.Columns.Add(new DataColumn("EmployeeName", typeof(string)));
         for (int i = 0; i < 10; i++) 
         {
            myDataRow = myDataTable.NewRow();
            myDataRow[0] = "somename" + i.ToString();
            myDataTable.Rows.Add(myDataRow);
         }
         DataView myDataView = new DataView(myDataTable);
         return myDataView;
      }

      void Page_Load(Object sender, EventArgs e) 
      {
         if (!IsPostBack) 
         {
            // Bind 'DataView' to the DataSource.
            myDataList.DataSource = CreateDataSource();
            myDataList.DataBind();
         }
         // Attach EventHandler for SelectedIndexChanged event.
         myDataList.SelectedIndexChanged += new EventHandler(selectedItemChanged);
      }

      // Handler function for 'SelectedIndexChanged' event.
      void selectedItemChanged(Object sender,EventArgs e)
      {
         DataListItem myCurrentItem = myDataList.SelectedItem;
         Control myNamingContainer = myCurrentItem.Controls[0].NamingContainer;
         // Display the NamingContainer.
         myLabel1.Text = "The NamingContainer is : " + myNamingContainer.UniqueID;
         // Display the UniqueID.
         myLabel2.Text = "The UniqueID is : " + ((Control)(myCurrentItem.Controls[0])).UniqueID;
      }      

    </script>
   </head>
   <body>
      <form runat="server" id="Form1">
         <h3>
            Control NamingContainer Example
         </h3>
         <h4>
            Click an item to view it's Naming Container and UniqueID
         </h4>
         <asp:Label ID="myLabel1" Runat="server"></asp:Label>
         <br />
         <asp:Label ID="myLabel2" Runat="server"></asp:Label>
         <br />
         <asp:DataList id="myDataList" runat="server" BorderColor="black">
            <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
            <SelectedItemStyle BackColor="lightgreen"></SelectedItemStyle>
            <HeaderTemplate>
               EmployeeName
            </HeaderTemplate>
            <ItemTemplate>
               <asp:LinkButton id="button1" Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>' CommandName="select" runat="server" />
               &nbsp;&nbsp;&nbsp;&nbsp;
            </ItemTemplate>
         </asp:DataList>
      </form>
   </body>
</html>
<%@ Import Namespace = "System.Data"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>
            Control NamingContainer Example
         </title>
<script language="VB" runat="server">
      ' Build the DataSource.
      Function CreateDataSource() As ICollection
         Dim myDataTable As New DataTable()
         Dim myDataRow As DataRow
         myDataTable.Columns.Add(New DataColumn("EmployeeName", GetType(String)))
         Dim i As Integer
         For i = 0 To 9
            myDataRow = myDataTable.NewRow()
            myDataRow(0) = "somename" + i.ToString()
            myDataTable.Rows.Add(myDataRow)
         Next i
         Dim myDataView As New DataView(myDataTable)
         Return myDataView
      End Function

      Sub Page_Load(sender As Object, e As EventArgs)
         If Not IsPostBack Then
            ' Bind 'DataView' to the DataSource.
            myDataList.DataSource = CreateDataSource()
            myDataList.DataBind()
         End If
         ' Attach EventHandler for SelectedIndexChanged event.
         AddHandler myDataList.SelectedIndexChanged, AddressOf selectedItemChanged
      End Sub

      ' Handler function for 'SelectedIndexChanged' event.
      Sub selectedItemChanged(sender As Object, e As EventArgs)
         Dim myCurrentItem As DataListItem = myDataList.SelectedItem
         Dim myNamingContainer As Control = myCurrentItem.Controls(0).NamingContainer
         ' Display the NamingContainer.
         myLabel1.Text = "The NamingContainer is : " + myNamingContainer.UniqueID
         ' Display the UniqueID.
         myLabel2.Text = "The UniqueID is : " + CType(myCurrentItem.Controls(0), Control).UniqueID
      End Sub
    </script>
   </head>
   <body>
      <form runat="server" id="Form1">
         <h3>
            Control NamingContainer Example
         </h3>
         <h4>
            Click an item to view it's Naming Container and UniqueID
         </h4>
         <asp:Label ID="myLabel1" Runat="server"></asp:Label>
         <br />
         <asp:Label ID="myLabel2" Runat="server"></asp:Label>
         <br />
         <asp:DataList id="myDataList" runat="server" BorderColor="black">
            <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
            <SelectedItemStyle BackColor="lightgreen"></SelectedItemStyle>
            <HeaderTemplate>
               EmployeeName
            </HeaderTemplate>
            <ItemTemplate>
               <asp:LinkButton id="button1" Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>' CommandName="select" runat="server" />
               &nbsp;&nbsp;&nbsp;&nbsp;
            </ItemTemplate>
         </asp:DataList>
      </form>
   </body>
</html>

Comentarios

Cada página en una aplicación Web ASP.NET contiene una jerarquía de controles.Each page in an ASP.NET Web application contains a hierarchy of controls. Esta jerarquía no es dependiente de si un control genera la interfaz de usuario visible para el usuario.This hierarchy is not dependent on whether a control generates UI visible to the user. El contenedor de nomenclatura de un control determinado es el control primario por encima de él en la jerarquía que implementa la INamingContainer interfaz.The naming container for a given control is the parent control above it in the hierarchy that implements the INamingContainer interface. Control de servidor que implementa esta interfaz crea un espacio de nombres único para el ID valores de propiedad de sus controles de servidor secundarios.A server control that implements this interface creates a unique namespace for the ID property values of its child server controls. Puede usar el NamingContainer propiedad del control secundario de un contenedor de nomenclatura para obtener una referencia a su contenedor primario.You can use the NamingContainer property of a naming container's child control to get a reference to its parent container.

Creación de un espacio de nombres único para los controles de servidor es especialmente importante al enlazar controles de servidor Web a los datos, como el Repeater y DataList los controles de servidor.Creating a unique namespace for server controls is particularly important when you bind Web server controls to data, such as the Repeater and DataList server controls. Cuando varias entradas en el origen de datos crean varias instancias de un control de servidor que es un elemento secundario del control de repetición, el contenedor de nomenclatura garantiza que cada instancia de estos controles secundarios tengan UniqueID valores de propiedad que no entren en conflicto.When multiple entries in the data source create multiple instances of a server control that is a child of the repeating control, the naming container ensures that each instance of these child controls have UniqueID property values that do not conflict. El contenedor de nomenclatura predeterminada para una página es la instancia de la Page clase que se genera cuando se solicita esa página.The default naming container for a page is the instance of the Page class that is generated when that page is requested.

El ClientID propiedad contiene el valor que se representa como el elemento id atributo en el marcado HTML.The ClientID property contains the value that is rendered as the element's id attribute in the HTML markup. Dependiendo del valor que se asigna a la ClientIDMode propiedad, el valor que se genera para el ClientID propiedad podría incluir el identificador de la NamingContainer objeto.Depending on the value that you assign to the ClientIDMode property, the value that is generated for the ClientID property might include the ID of the NamingContainer object. Al establecer ClientIDMode a Static, ClientID valor no incluye el identificador de la NamingContainer objeto.When you set ClientIDMode to Static, the ClientID value does not include the ID of the NamingContainer object. Al establecer ClientIDMode como AutoID o Predictable, el ClientID valor incluirá el identificador de la NamingContainer objeto.When you set ClientIDMode to either AutoID or Predictable, the ClientID value will include the ID from the NamingContainer object. Para obtener más información, vea Identificación de controles de formularios Web Forms.For more information, see ASP.NET Web Server Control Identification.

Se aplica a

Consulte también: