Cómo: Obtener acceso a miembros de un contenedor de nombres de un control de servidor Web
Actualización: noviembre 2007
A veces, es necesario tener acceso a propiedades o métodos del contenedor de nomenclatura de un control. Por ejemplo, durante el enlace a datos, el contenedor de nomenclatura pone a disposición una propiedad DataItem que contiene los datos a los que están enlazados los controles. Puede tener acceso al control contenedor de varias maneras, dependiendo del contexto.
Para tener acceso al contenedor de nomenclatura desde una expresión de enlace a datos
En la expresión de enlace a datos, utilice la palabra clave Container, que devuelve una referencia al contenedor. A continuación, puede tener acceso a las propiedades o métodos del contenedor.
Esta palabra clave se utiliza principalmente en el método Eval para obtener valores desde el objeto DataItem del contenedor de nomenclatura, pero se puede utilizar también fuera de ese método. El ejemplo siguiente muestra un control Label que puede estar en una plantilla para un control DataList, Repeater o GridView. Muestra el número de elemento actual.
<asp:Label ID="Label1" > <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %> </asp:Label>
<asp:Label ID="Label1" > <%# Container.DataItemIndex + 1 %>. <%# Eval("Title") %> </asp:Label>
El ejemplo siguiente es similar, pero obtiene un valor desde el objeto DataItem del contenedor de nomenclatura:
<asp:Label ID="Label2" > <%# DataBinder.Eval(Container.DataItem, "Author") %> </asp:Label>
<asp:Label ID="Label2" > <%# DataBinder.Eval(Container.DataItem, "Author") %> </asp:Label>
Nota: La propiedad NamingContainer no hace referencia necesariamente al mismo control que la propiedad Parent. Por ejemplo, en un control Repeater, puede tener una plantilla de elemento que contenga una tabla que, a su vez, contenga un control Label. El control primario de la etiqueta es una celda de tabla (por ejemplo, un objeto HtmlTableCell), pero su contenedor de nomenclatura es el objeto DataListItem, porque es DataListItem quien define el espacio de nombres para el control Label y no la tabla.
Para tener acceso al contenedor de nomenclatura desde el código
Obtenga la propiedad NamingContainer del control y conviértala al tipo de la clase del contenedor, como GridViewRow.
Para obtener un ejemplo de uso de la propiedad NamingContainer a fin de obtener información sobre un contenedor de nomenclatura de un control individual, vea Utilizar la propiedad NamingContainer para determinar el contenedor de nombres de un control.
Vea también
Conceptos
Identificación de controles de formularios Web Forms
Referencia
Sintaxis de expresiones de enlace de datos