Control.NamingContainer Propriété

Définition

Obtient une référence au conteneur d'attribution de noms du contrôle serveur, qui crée un espace de noms unique pour différencier les contrôles serveur dont la propriété ID possède la même valeur.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

Valeur de propriété

Conteneur d'attribution de noms du contrôle serveur.The server control's naming container.

Attributs

Exemples

L’exemple suivant illustre l’utilisation de la propriété NamingContainer.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>

Remarques

Chaque page d’une application Web ASP.NET contient une hiérarchie de contrôles.Each page in an ASP.NET Web application contains a hierarchy of controls. Cette hiérarchie n’est pas dépendante si un contrôle génère l’interface utilisateur visible par l’utilisateur.This hierarchy is not dependent on whether a control generates UI visible to the user. Le conteneur d’attribution de noms d’un contrôle donné est le contrôle parent situé au-dessus de lui dans la hiérarchie qui implémente l’interface INamingContainer.The naming container for a given control is the parent control above it in the hierarchy that implements the INamingContainer interface. Un contrôle serveur qui implémente cette interface crée un espace de noms unique pour les valeurs de propriété ID de ses contrôles serveur enfants.A server control that implements this interface creates a unique namespace for the ID property values of its child server controls. Vous pouvez utiliser la propriété NamingContainer du contrôle enfant d’un conteneur d’attribution de noms pour obtenir une référence à son conteneur parent.You can use the NamingContainer property of a naming container's child control to get a reference to its parent container.

La création d’un espace de noms unique pour les contrôles serveur est particulièrement importante quand vous liez des contrôles serveur Web à des données, telles que les contrôles serveur Repeater et DataList.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. Quand plusieurs entrées de la source de données créent plusieurs instances d’un contrôle serveur qui est un enfant du contrôle répétitif, le conteneur d’attribution de noms garantit que chaque instance de ces contrôles enfants a des valeurs de propriété UniqueID qui ne sont pas en conflit.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. Le conteneur d’attribution de noms par défaut d’une page est l’instance de la classe Page qui est générée lorsque cette page est demandée.The default naming container for a page is the instance of the Page class that is generated when that page is requested.

La propriété ClientID contient la valeur qui est restituée sous la forme de l’attribut id de l’élément dans le balisage HTML.The ClientID property contains the value that is rendered as the element's id attribute in the HTML markup. Selon la valeur que vous affectez à la propriété ClientIDMode, la valeur générée pour la propriété ClientID peut inclure l’ID de l’objet NamingContainer.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. Lorsque vous affectez à ClientIDMode la valeur Static, la valeur de ClientID n’inclut pas l’ID de l’objet NamingContainer.When you set ClientIDMode to Static, the ClientID value does not include the ID of the NamingContainer object. Lorsque vous affectez à ClientIDMode la valeur AutoID ou Predictable, la valeur ClientID inclut l’ID de l’objet NamingContainer.When you set ClientIDMode to either AutoID or Predictable, the ClientID value will include the ID from the NamingContainer object. Pour plus d’informations, consultez Identification du contrôle serveur web ASP.NET.For more information, see ASP.NET Web Server Control Identification.

S’applique à

Voir aussi