Olá membros e visitantes, estou escrevendo mais um artigo simples, porém, muito útil para quem ainda esta querendo se familiarizar com o ASP:Repeater, eu particularmente utilizando muito, prefiro montar meu layout mais livre com tags xhtml – flexibilidade -, é ideal para quem prefere ter mais controle da formatação do layout , por este motivo opto por ele.
Templates
<ItemTemplate>: este template é responsável por executar o “looping” nos registros exibindo na tela a formatação inserida nele. Template obrigatório.
<AlternatingItemTemplate>: tem a mesma funcionalidade do ItemTemplate, porém, neste template você pode definir um layout diferenciado, por exemplo, mudando cor de fundo da linha. Template Opcional.
<SeparatorTemplate>: exibe um layout de separação entre os itens do “looping”. Template Opcional.
<HeaderTemplate>: define um cabeçalho para o layout antes de iniciar um “looping”. Template Opcional.
<FooterTemplate>: define um rodapé para o layout após final de um “looping”. Template Opcional.
Cuidado:
Pelo ASP:Repeater ser um controle de saída, pode executar no browser do client, scripts maliciosos, para evitar este problema você precisa fazer uma validação específica, veja mais detalhes em Validação Server-Side. Rende mais um artigo futuramente
Html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %> <!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 runat="server"> <title>Usando ASP:Repeater ASP.Net</title> <style type="text/css"> li { width: 200px; padding: 10px; font: bold 14px "trebuchet MS"; } .cinza { background: #F0F0F0; } </style> </head> <body> <form id="form1" runat="server"> <div id="all"> <h3>EMPRESAS DE INFORMÁTICA</h3><br /> <asp:Repeater ID="rptDados" runat="server"> <HeaderTemplate> <ul> </HeaderTemplate> <ItemTemplate> <li> <%# Eval("Nome") %></li> </ItemTemplate> <AlternatingItemTemplate> <li> <%# Eval("Nome") %></li> </AlternatingItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> </div> </form> </body> </html>
Code Behind
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList values = new ArrayList();
values.Add(new Dados("Microsoft", "Msft"));
values.Add(new Dados("Intel", "Intc"));
values.Add(new Dados("Dell", "Dell"));
rptDados.DataSource = values;
rptDados.DataBind();
}
}
}
public class Dados
{
private string nome;
private string sigla;
public Dados(string nome, string sigla)
{
this.nome = nome;
this.sigla = sigla;
}
public string Nome
{
get
{
return nome;
}
}
public string Sigla
{
get
{
return sigla;
}
}
}
Explicação
Criação de uma classe pública de nome “Dados” com dois campos string para armazenar informações, servindo de fonte de dados para o ASP:Repeater. Criação de um ArrayList, e inserção de valores, para este código seu resultado deve ser como na imagem abaixo:
Muito simples usar ASP:Repeater né? Agora fica a pergunta, se na minha fonte de dados não tiver nenhuma informações como irá mostrar o resultado para o cliente? Simplesmente, não tem resultado nenhum e não existe nenhum configuração para que você informe uma mensagem do tipo: “Nenhum registro cadastrado!”, agora vem a dica de como obter esse resultado.
Antes do ASP:Repetar no Html vamos criar uma div com a propriedade runat=”server”, visibility=”false”, essa div ficará com a mensagem e não será exibida para o nosso cliente, somente quando o ASP:Repeater não contiver informações na fonte de dados, código abaixo adaptado:
Html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %> <!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 runat="server"> <title>Usando ASP:Repeater ASP.Net</title> <style type="text/css"> li { width: 200px; padding: 10px; font: bold 14px "trebuchet MS"; } .cinza { background: #F0F0F0; } </style> </head> <body> <form id="form1" runat="server"> <div id="all"> <h3>EMPRESAS DE INFORMÁTICA</h3><br /> <div id="mensagem" runat="server" visible="false"> Nenhum registro cadastrado! </div> <asp:Repeater ID="rptDados" runat="server"> <HeaderTemplate> <ul> </HeaderTemplate> <ItemTemplate> <li> <%# Eval("Nome") %></li> </ItemTemplate> <AlternatingItemTemplate> <li> <%# Eval("Nome") %></li> </AlternatingItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> </div> </form> </body> </html>
Code Behind
if (!IsPostBack)
{
ArrayList values = new ArrayList();
values.Add(new Dados("Microsoft", "Msft"));
values.Add(new Dados("Intel", "Intc"));
values.Add(new Dados("Dell", "Dell"));
rptDados.DataSource = values;
rptDados.DataBind();
rptDados.Visible = (rptDados.Items.Count > 0);
mensagem.Visible = !(rptDados.Items.Count > 0);
}
Para ver o resultado comente as linhas que adicionando valores ao ArrayList:
//values.Add(new Dados("Microsoft", "Msft"));
//values.Add(new Dados("Intel", "Intc"));
//values.Add(new Dados("Dell", "Dell"));
Pronto agora seu ASP:Repeater irá mostrar uma mensagem mais amigável para o cliente quando a fonte de dados não possuir informações.
Referências:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx
Atenciosamente,
Ricardo M Machado
MCT, MCITP, MCTS – Community Leader.








