ASP.NET Web Forms - controle de repetidor
O controle ASP.NETRepeater é o controle de vinculação de dados original. Esta seção apresenta o uso do controle Repeater em operações de vinculação de dados ASP.NET.
O controle Repeater é usado para exibir uma lista repetida de itens vinculados ao controle.
Vincule o DataSet ao controle Repeater
O controle Repeater é usado para exibir uma lista repetida de itens vinculados ao controle. Os controles repetidores podem ser vinculados a tabelas de banco de dados, arquivos XML ou outras listas de itens. Aqui, demonstraremos como vincular um arquivo XML a um controle Repeater.
Em nosso exemplo, usaremos o seguinte arquivo XML (“cdcatalog.xml”):
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>EUA</country > <company>Columbia</company> <price>10,90</price> <ano>1985</ano> </cd> <cd> <title>Esconda seu coração</title> <artista>Bonnie Tyler</artist> <country>Reino Unido</country> <company>CBS Records</company> <price>9,90</price> <year>1988</year> </cd> <cd> <title>Maiores sucessos </title> <artist>Dolly Parton</artist> <country>EUA</country> <company>RCA</company> <price>9,90</price> <year>1982</year> </cd> <cd> <title>Ainda estou triste</title> <artist>Gary Moore</artist> <country>Reino Unido</country> <company>Virgin Records</company> <price>10,20</price> <ano >1990</ano> </cd> <cd> <title>Eros</title> <artista>Eros Ramazzotti</artist> <país>UE</país> <empresa>BMG</empresa> <price>9,90</price> <year>1997</year> </cd> </catalog>Visualize este arquivo XML: cdcatalog.xml
Primeiro, importe o namespace “System.Data”. Precisamos deste namespace para trabalhar com objetos DataSet. Inclua a seguinte diretiva no topo da sua página .aspx:
<%@Importar Namespace="System.Data" %>Em seguida, crie um DataSet para o arquivo XML e carregue o arquivo XML no DataSet quando a página for carregada pela primeira vez:
<script runat="server"> sub Page_Load if Not Page.IsPostBack então dim mycdcatalog=Novo DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end subEm seguida, criamos um controle Repeater na página .aspx. O conteúdo do elemento <HeaderTemplate> é renderizado primeiro e aparece apenas uma vez na saída, enquanto o conteúdo do elemento <ItemTemplate> é repetido para cada "registro" no DataSet. Finalmente, o conteúdo do elemento <FooterTemplate> é repetido. Aparece apenas uma vez na saída:
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>Em seguida, adicionamos o script para criar o DataSet e vincular o mycdcatalog DataSet ao controle Repeater. Em seguida, use tags HTML para preencher o controle Repetidor e vincular itens de dados a células na área <ItemTemplate> por meio de <%#Container.DataItem("fieldname")%>:
Exemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack então dim mycdcatalog=Novo DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =meucdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <formulário runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Preço</th> <th>Ano</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("preço")%></td> <td><%#Container.DataItem("ano")%></td> </tr> </ItemTemplate> <FooterTemplate > </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>Dica: Para conhecimento sobre tags HTML, você pode consultar o "Manual de Referência HTML" deste site!
Usar <AlternatingItemTemplate>
Você pode adicionar um elemento <AlternatingItemTemplate> após um elemento <ItemTemplate> para descrever a aparência de linhas alternadas na saída. No exemplo abaixo, todas as linhas da tabela são exibidas com um fundo cinza claro:
Exemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack então dim mycdcatalog=Novo DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =meucdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Preço</th> <th>Ano</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate > <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artista")%></td> <td><%#Container.DataItem("país")%></td> <td><%#Container.DataItem( "empresa")%></td> <td><%#Container.DataItem("preço")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < /corpo> </html>Usar <SeparatorTemplate>
O elemento <SeparatorTemplate> é usado para descrever o separador entre cada registro. No exemplo abaixo, uma linha horizontal é inserida entre cada linha da tabela:
Exemplo
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack então dim mycdcatalog=Novo DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =meucdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Título</th> <th>Artista</th> <th>País </th> <th>Empresa</th> <th>Preço</th> <th>Ano</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "país")%></td> <td><%#Container.DataItem("empresa")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <SeparatorTemplate > <tr> <td colspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>O texto acima é uma introdução ao uso do controle ASP.NETRepeater.