Control.NamingContainer Vlastnost

Definice

Získá odkaz na kontejner názvového serveru ovládacího prvku, který vytvoří jedinečný obor názvů pro odlišení ovládacích prvků serveru se stejnou ID hodnotou vlastnosti.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.Browsable(false)]
public virtual System.Web.UI.Control NamingContainer { get; }
[System.ComponentModel.Browsable(false)]
[System.ComponentModel.Bindable(false)]
public virtual System.Web.UI.Control NamingContainer { get; }
[<System.ComponentModel.Browsable(false)>]
member this.NamingContainer : System.Web.UI.Control
[<System.ComponentModel.Browsable(false)>]
[<System.ComponentModel.Bindable(false)>]
member this.NamingContainer : System.Web.UI.Control
Public Overridable ReadOnly Property NamingContainer As Control

Hodnota vlastnosti

Control

Názvový kontejner ovládacího prvku serveru.The server control's naming container.

Atributy

Příklady

Následující příklad ukazuje použití NamingContainer Vlastnosti.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>

Poznámky

Každá stránka ve webové aplikaci ASP.NET obsahuje hierarchii ovládacích prvků.Each page in an ASP.NET Web application contains a hierarchy of controls. Tato hierarchie není závislá na tom, zda ovládací prvek generuje uživatelské rozhraní viditelné pro uživatele.This hierarchy is not dependent on whether a control generates UI visible to the user. Názvový kontejner pro daný ovládací prvek je nadřazený ovládací prvek nad ním v hierarchii, která implementuje INamingContainer rozhraní.The naming container for a given control is the parent control above it in the hierarchy that implements the INamingContainer interface. Serverový ovládací prvek, který implementuje toto rozhraní, vytvoří jedinečný obor názvů pro ID hodnoty vlastností jeho podřízených ovládacích prvků serveru.A server control that implements this interface creates a unique namespace for the ID property values of its child server controls. Můžete použít NamingContainer vlastnost podřízeného ovládacího prvku názvového kontejneru a získat odkaz na jeho nadřazený kontejner.You can use the NamingContainer property of a naming container's child control to get a reference to its parent container.

Vytvoření jedinečného oboru názvů pro serverové ovládací prvky je obzvláště důležité, Pokud svážete ovládací prvky webového serveru s daty, jako jsou například Repeater DataList serverové ovládací prvky a.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. Pokud více záznamů ve zdroji dat vytvoří více instancí serverového ovládacího prvku, který je podřízeným prvkem opakujícího se ovládacího prvku, kontejner názvů zajišťuje, že každá instance těchto podřízených ovládacích prvků má UniqueID hodnoty vlastností, které nejsou v konfliktu.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. Výchozím názvovým kontejnerem stránky je instance Page třídy, která je generována při požadavku na tuto stránku.The default naming container for a page is the instance of the Page class that is generated when that page is requested.

ClientIDVlastnost obsahuje hodnotu, která je vykreslena jako id atribut elementu v kódu HTML.The ClientID property contains the value that is rendered as the element's id attribute in the HTML markup. V závislosti na hodnotě, kterou přiřadíte ClientIDMode vlastnosti, může hodnota, která je generována pro ClientID vlastnost, zahrnovat ID NamingContainer objektu.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. Když nastavíte ClientIDMode na Static , ClientID hodnota nezahrnuje ID NamingContainer objektu.When you set ClientIDMode to Static, the ClientID value does not include the ID of the NamingContainer object. Když nastavíte ClientIDMode AutoID Predictable hodnotu nebo, ClientID hodnota bude obsahovat ID z NamingContainer objektu.When you set ClientIDMode to either AutoID or Predictable, the ClientID value will include the ID from the NamingContainer object. Další informace naleznete v tématu Identifikace ovládacího prvku webového serveru ASP.NET.For more information, see ASP.NET Web Server Control Identification.

Platí pro

Viz také