Oficina da Net Logo

Incluir imagem no Report Viewer com caminho gravado no Banco

Como Incluir imagem no Report Viewer 10 (ASP .NET) com caminho gravado no Banco. Neste artigo vou apresentar a solução para um problema comum quando temos a intenção de incluir uma imagem em um ReportViewer

Por | @oficinadanet Programação

Neste artigo vou apresentar a solução para um problema comum quando temos a intenção de incluir uma imagem em um ReportViewer. Como exemplo, para um software multiempresa, podemos ter uma funcionalidade para incluir o logo desta empresa (para apresentação em relatórios). Suponhamos que a aplicação salve a imagem no servidor e grave no banco o caminho, por exemplo, "~/img/cliente/logoCliente1.png".

A ideia seria o report incluir a imagem de acordo com o caminho que será recuperado do banco. Nos itens abaixo será apresentado como fazer esta configuração.
 

Criando o parâmetro que irá receber o caminho da imagem:


Primeiramente vamos adicionar um parâmetro em nosso ReportViewer:

a. No VS, com o report aberto, acesse a opção “View->ReportData”;
b. No item “Parameter”, clique com o botão direito e escolha a opção “Add Parameter”;
c. Preencha o nome do parâmetro com o valor “Path”, e escolha o Data type como “Text”.
d. Insira um campo do tipo Imagem no Report.
 

Recuperando o caminho da imagem e adicionando ao parâmetro:


Bom, agora que já temos nosso parâmetro “Path” criado, vamos para a parte do C#:

a. No evento Page_Load da página aspx que irá apresentar o relatórios, precisamos habilitar o report para aceitar imagens externas. Para isso, insira o seguinte trecho:
this.rptMeuReport.LocalReport.EnableExternalImages = true;

b. Ainda no evento Page_Load, efetuamso a verificação de PostBack e incluímos o trecho abaixo para recuperar o caminho da imagem e adicionar este valor ao parâmetro “Path” no  relatório:
if (!IsPostBack) {
     string imagepath = "file:///" + Server.MapPath("~/img/cliente/logoCliente1.png”);
     ReportParameter[] param = new ReportParameter[1];
     param[0] = new ReportParameter("Path", imagepath);
} 

Obs.: Vale lembrar que a verificação de PostBack é necessária pois podemos usar o ASP.NET postbacks para renderizar o relatório. A sequência de comunicação é:

a. Navegador faz uma solicitação GET para a página ASPX para obter o conteúdo da página e um indicador de carregamento para o relatório;

b. Navegador faz uma solicitação POST para a página ASPX para obter o HTML para o relatório (este conteúdo está em um UpdatePanel).

c. Navegador faz solicitações GET para o manipulador de HTTP para obter todas as imagens no relatório

Como estamos alterando os valores de parâmetro, o ReportViewer é avisado que tem de reiniciar o processamento do relatório. Efetivamente, ele informa ao visualizador para retornar à etapa “a”(colocar o indicador “Loading” no navegador e reiniciar o processamento do relatório). Se o relatório fizer isso durante cada postback, o Report nunca chegará à etapa “b”. Ele só vai ficar em um loop infinito.
 
Bom, feito isso, temos nosso Report com a imagem externa carregando através de um caminho disponível no banco.


Referências:
Brian Hartman - MSFT. Relatórios nunca param de carregar com o VS 2010.

MAIS SOBRE Asp banco de dados
SHARE
+ Artigos
Assine a nossa newsletter
Comentários
Siga o nosso Instagram!

Estamos lá também: @oficinadanetoficial

Seguir o Instagram do Oficina da Net