Compartir a través de


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

Vea también

Conceptos

Identificación de controles de formularios Web Forms

Referencia

Sintaxis de expresiones de enlace de datos

Otros recursos

Obtener acceso a controles ASP.NET mediante programación