Formularios web ASP.NET: control de repetidor
El control ASP.NETRepeater es el control de enlace de datos original. Esta sección presenta el uso del control Repetidor en las operaciones de enlace de datos de ASP.NET.
El control Repetidor se utiliza para mostrar una lista repetida de elementos vinculados al control.
Vincular el conjunto de datos al control Repetidor
El control Repetidor se utiliza para mostrar una lista repetida de elementos vinculados al control. Los controles repetidores se pueden vincular a tablas de bases de datos, archivos XML u otras listas de elementos. Aquí, demostraremos cómo vincular un archivo XML a un control Repetidor.
En nuestro ejemplo, usaremos el siguiente archivo XML ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>Estados Unidos</country > <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Esconde tu corazón</title> <artista>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9,90</price> <año>1988</year> </cd> <cd> <title>Grandes éxitos </title> <artist>Dolly Parton</artist> <country>USA</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>Aún tengo blues</title> <artist>Gary Moore</artist> <country>UK</country> <company>Virgin records</company> <price>10.20</price> <año >1990</año> </cd> <cd> <título>Eros</título> <artista>Eros Ramazzotti</artista> <país>UE</país> <empresa>BMG</empresa> <precio>9,90</precio> <año>1997</año> </cd> </catalog>Ver este archivo XML: cdcatalog.xml
Primero, importe el espacio de nombres "System.Data". Necesitamos este espacio de nombres para trabajar con objetos DataSet. Incluya la siguiente directiva en la parte superior de su página .aspx:
<%@ Importar espacio de nombres="System.Data" %>A continuación, cree un conjunto de datos para el archivo XML y cargue el archivo XML en el conjunto de datos cuando se cargue la página por primera vez:
<script runat="servidor"> sub Page_Load si no es Page.IsPostBack entonces dim mycdcatalog=Nuevo conjunto de datos mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end subLuego creamos un control Repetidor en la página .aspx. El contenido del elemento <HeaderTemplate> se representa primero y aparece solo una vez en la salida, mientras que el contenido del elemento <ItemTemplate> se repite para cada "registro" en el DataSet. Finalmente, el contenido del elemento <FooterTemplate> es. Aparece solo una vez en la salida:
<html> <cuerpo> <form runat="servidor"> <asp:Repeater id="cdcatalog" runat="servidor"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>Luego agregamos el script para crear el conjunto de datos y vinculamos el conjunto de datos mycdcatalog al control repetidor. Luego use etiquetas HTML para completar el control Repetidor y vincule elementos de datos a celdas en el área <ItemTemplate> a través de <%#Container.DataItem("fieldname")%>:
Ejemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load si no es Page.IsPostBack entonces dim mycdcatalog=Nuevo conjunto de datos mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() fin si fin sub </script> <html> <cuerpo> <formulario runat="servidor"> <asp:Repeater id="cdcatalog" runat="servidor"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Precio</th> <th>Año</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("título")%></td> <td><%#Container.DataItem("artista")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("precio")%></td> <td><%#Container.DataItem("año")%></td> </tr> </ItemTemplate> <FooterTemplate > </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>Consejo: Para obtener conocimientos sobre las etiquetas HTML, puede consultar el "Manual de referencia HTML" de este sitio.
Utilice <Plantilla de elemento alternativo>
Puede agregar un elemento <AlternatingItemTemplate> después de un elemento <ItemTemplate> para describir la apariencia de filas alternas en la salida. En el siguiente ejemplo, cada dos filas de la tabla se muestra con un fondo gris claro:
Ejemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load si no es Page.IsPostBack entonces dim mycdcatalog=Nuevo conjunto de datos mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() fin si fin sub </script> <html> <cuerpo> <formulario runat="servidor"> <asp:Repeater id="cdcatalog" runat="servidor"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Precio</th> <th>Año</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("título")%></td> <td><%#Container.DataItem("artista")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("precio")%></td> <td><%#Container.DataItem("año")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate > <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("título")%></td> <td><%#Container.DataItem("artista")%></td> <td><%#Container.DataItem("país")%></td> <td><%#Container.DataItem( "empresa")%></td> <td><%#Container.DataItem("precio")%></td> <td><%#Container.DataItem("año")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < /cuerpo> </html>Utilice <Plantilla de separador>
El elemento <SeparatorTemplate> se utiliza para describir el separador entre cada registro. En el siguiente ejemplo, se inserta una línea horizontal entre cada fila de la tabla:
Ejemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load si no es Page.IsPostBack entonces dim mycdcatalog=Nuevo conjunto de datos mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() fin si fin sub </script> <html> <cuerpo> <formulario runat="servidor"> <asp:Repeater id="cdcatalog" runat="servidor"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Precio</th> <th>Año</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("título")%></td> <td><%#Container.DataItem("artista")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("precio")%></td> <td><%#Container.DataItem("año")%></td> </tr> </ItemTemplate> <SeparatorTemplate > <tr> <td colspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>Lo anterior es una introducción al uso del control ASP.NETRepeater.