Como adicionar uma imagem dentro de um GridView

Olá caro leitor,  essa semana tive um requisito no projeto em que trabalho, que ocasionou algumas horas de pesquisas e tentativas.  O novo requisito era que, dentro de um gridview apresentasse certas imagens. Vamos a solução abaixo:

 <div>
<asp:GridView runat="server" ID="gridExemplo" AutoGenerateColumns="false"
     OnDataBound="gridExemplo_DataBound">
 <Columns>
  <asp:TemplateField>
    <HeaderTemplate>
      <asp:Label ID="Label1" Text="Imagem" runat="server"></asp:Label>
    </HeaderTemplate>
   <ItemTemplate>
     <asp:Image ID="imgImagem" runat="server" CommandName="imgImagem"/>
   </ItemTemplate>
  </asp:TemplateField>
  <asp:BoundField DataField="Nome" HeaderText="Nome" />
</Columns>
</asp:GridView>

O código acima é de uma gridview simples cujo a primeira coluna é a imagem e na segunda o nome.  O carregamento da grid é feito utilizando o seguinte codigo:


private void CarregaGridView(){

RegistrosGrid = _service.Login.RetornaUsuarios();

gridExemplo.DataSource =  RegistrosGrid;
 gridExemplo.DataBind();

}


protected void gridExemplo_DataBound_DataBound(object sender, EventArgs e)
{
   foreach (GridViewRow item in gridExemplo.Rows)
   {
     if (item != null)
     {
      //Percorre os registros.
      foreach (Entidade itemEntidade in RegistrosGrid)
      {
        //Se existir imagem
        if (itemEntidade.IMAGEM != null)
       {
        string base64 = Convert.ToBase64String(itemEntidade.IMAGEM, 0, itemEntidade.IMAGEM.Length);
        System.Web.UI.WebControls.Image img = item.FindControl("imgImagem") as System.Web.UI.WebControls.Image;
        if (img != null)
        {
           img.ImageUrl = "data:image/png;base64," + base64;
        }
       }
     }
   }
  }
}

3 comentários sobre “Como adicionar uma imagem dentro de um GridView

  1. Muito boa a dica Jucinei. Esse detalhe de usar a imagem em formato Base64 eu não havia pensado. A ideia é muito boa se precisar enviar um HTML formatado com imagens.

    Vou incluir o link de seu blog no C# Brasil.

    Parabéns e obrigado por compartilhar!

  2. muuuuito boa a “gambiarra”! =D

    utilizei esse lance de pegar imagem em base64 pra enviar imagens pro servidor via ajax =)

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s