Destaques

Certificações Prometric 20% e Second Shot LEVE A SUA CARREIRA EM INFORMÁTICA até o SEU PRÓXIMO DESTINO ECONOMIZE ATÉ 20% NOS PACOTES DE CERTIFICAÇÃO DA MICROSOFT COM SEGUNDAS TENTATIVAS GRÁTIS http://bit.ly/bkRfRc

Ler Artigo Completo

Palestra Cloud Computing na ULBRA/PVH Na semana de informática da Ulbra de Porto Velho/RO, tive a oportunidade pelo SENAI/RO de ir debater sobre Cloud Computing & SQL Azure, segue fotos do evento: [caption id="attachment_320" align="aligncenter"...

Ler Artigo Completo

MS lança Visual Studio focado na nuvem Família Visual Studio crescendo, foi divulgado nesta terça-feira, 03 de agosto o lançamento de do Visual Studio LightSwitch, especial para foco em desenvolvimento na Nuvem. Por enquanto será...

Ler Artigo Completo

Palestras no Tech Ed 2010 Disponíveis! Bem vindos ao Tech·Ed 2010 O maior evento técnico brasileiro voltado para profissionais de TI e Desenvolvedores que utilizam a tecnologia Microsoft em seu dia a dia, este ano vem repleto de novidades. Você...

Ler Artigo Completo

Microsoft em Números Se você anda antenado nas notícias do “mundo Microsoft” deve ter ouvido falar na semana passada sobre as vendas do Windows 7 terem alcançado o número de 150 milhões de cópias em 8 meses, o que...

Ler Artigo Completo

  • Prev
  • Next

Usando o ASP:Repeater

1

Categoria: ASP.Net, Desenv. Web, Ferramentas & Linguagens, Visual C#, Visual Studio, Visual Studio Express, Visual Studio Team System

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.

Switch to our mobile site