ID do artigo: 317429 - Última revisão: segunda-feira, 23 de maio de 2005 - Revisão: 2.6

Como usar o evento ItemDataBound de controles de lista de Web Forms no Visual Basic .NET

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo passo a passo descreve como usar o evento ItemDataBound do Web Forms DataGrid , DataList , e Repeater controles aos executar processamento especial em linhas individuais de dados que são exibidos em um controle de lista ligados a dados.

Descrição da técnica

Quando você exibe uma lista de itens em um controle de lista ligados a dados, talvez queira aplicar lógica condicional para exibir informações diferentes, ou para aplicar formatação diferente, a itens diferentes. Você pode usar o evento ItemDataBound para aplicar essa lógica como cada linha individual de dados é processada e exibida.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs são necessários:
  • Microsoft Visual Studio .NET instalado em um compatível com sistema operacional Microsoft Windows
  • Uma instância disponível da Microsoft (IIS) 5.0 ou posterior com o Microsoft .NET Framework instalado
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Microsoft Visual Basic .NET
  • Formulários da web do ASP.NET
  • Acesso a dados ADO.NET

Criar o formulário da Web

  1. Inicie o Visual Studio.NET e crie um novo aplicativo do ASP.NET do Visual Basic.
  2. Altere a propriedade pageLayout de formulário da Web para FlowLayout .
  3. Arraste um controle Repeater da caixa de ferramentas para o formulário.
  4. Alternar do modo de design para modo de exibição de HTML.
  5. Entre as abertura e fechamento <asp:Repeater> e </asp:Repeater> marcas, insira o código a seguir para exibiritens de repetidor de uma lista com marcadores:
      <HeaderTemplate><ul></HeaderTemplate>
      <ItemTemplate>
        <li> 
          <asp:Label ID="lblContactName" runat=server ForeColor=Blue
            text='<%# Container.DataItem("ContactName")%>'>
          </asp:Label>
        </li>
      </ItemTemplate>
      <FooterTemplate></ul></FooterTemplate>
    					

Carregar os dados

  1. Alterne para o módulo "código por trás" (WebForm1.aspx.vb).
  2. Adicione as instruções a seguir na parte superior do módulo de código:
    Imports System.Data.SqlClient
    Imports System.Data.Common
    					
  3. Adicione o código no evento Page_Load para recuperar a lista de clientes do banco de dados de exemplo Northwind em um objeto do SqlDataReader . Vincule o controle Repeater a DataReader . Ajustar a seqüência de conexão está listada no seguinte código para conectar a um servidor SQL disponíveis:
      Dim cn As SqlConnection = New SqlConnection("Data Source=(local);" & _
          "Initial Catalog=Northwind;User ID=user;Password=password")
      cn.Open()
      Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", cn)
      Dim dr As SqlDataReader = cmd.ExecuteReader()
      Repeater1.DataSource = dr
      Repeater1.DataBind()
    					
  4. Execute o projeto. Uma lista com marcadores de nomes de contato da lista Northwind Customers é exibida na página. Cada nome de contato é formatado em azul por padrão.

Manipular o evento ItemDataBound

  1. Alterne para modo de exibição HTML para o formulário da Web. Na abertura <asp:Repeater> marca, adicione o seguinte atributo para definir um manipulador de eventos para oevento ItemDataBound :
    OnItemDataBound="FormatRepeaterRow"
    					
  2. Alterne para modo de exibição código e, em seguida, adicione o seguinte procedimento de manipulador de evento:
    Protected Sub FormatRepeaterRow(ByVal sender As Object,
        ByVal e As RepeaterItemEventArgs)
      If e.Item.ItemType = ListItemType.Item Or _
          e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim dbr As DbDataRecord = CType(e.Item.DataItem, DbDataRecord)
        If Not IsDBNULL(dbr("Country")) AndAlso dbr("Country") = "USA" Then
          CType(e.Item.FindControl("lblContactName"), Label).ForeColor = _
              System.Drawing.Color.Red
        End If
      End If
    End Sub
    					
  3. Execute novamente o projeto. Contatos dos Estados Unidos (13 de 91 clientes) são exibidos em vermelho por causa do código de formatação condicional que está contido no manipulador de eventos ItemDataBound .

Solução de problemas

  • Se a fonte de dados for um objeto DataReader , você deve converter e.Item.DataItem conforme digite DBDataRecord (de System.Data.Common ) no manipulador de eventos. Se a fonte de dados for um DataTable , você deve converter e.Item.DataItem como tipo DataRowView .
  • Mesmo se você não tiver criado uma entrada <alternatingitemtemplate> no seucontrole Repeater , todas as outras linhas ainda tem um valor ItemType ListItemType.AlternatingItem . Portanto, você deve procurar tanto ListItemType.Item como ListItemType.AlternatingItem processar cada linha.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
307860  (http://support.microsoft.com/kb/307860/EN-US/ ) INFO: Dados do ASP.NET Visão geral de vinculação

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
Palavras-chave: 
kbmt kbdatabinding kbhowtomaster KB317429 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 317429  (http://support.microsoft.com/kb/317429/en-us/ )
 

Traduções deste artigo