Criando um link para impressão de um DataGrid

Frequentemente o usuário de nossa aplicação desejará imprimir dados da aplicação. Porém para que a impressão saia otimizada (em termos de papel e tinta) é necessário separar as informações que o usuário deseja imprimir do restante do layout do site.

Para isso precisamos criar um link que abra em uma nova janela apenas os dados que serão impressos, sem todo o layout de nosso site que rodeia os dados. Podemos fazer isso facilmente utilizando um pouco de JavaScript.

Supondo que os dados que serão impressos estão em um DataGrid, o primeiro passo será cercar o DataGrid com uma DIV. Veja como fica :

 

"<div id="divPrint">"

"<asp:datagrid>"

.....

.....

.....

"asp:datagrid>"

"div>"

 

Precisaremos também de uma função JavaScript, que poderá ser inserida diretamente no HTML da página :

 

"<script language=javascript>"

"function CallPrint(strid)"

"{"

  "var prtContent = document.getElementById(strid);"

  "var WinPrint = window.open('','','letf=0,top=0,width=1,height=1,toolbar=0,scrollbars=0,status=0');"

  "WinPrint.document.write(prtContent.innerHTML);"

  "WinPrint.document.close();"

  "WinPrint.focus();"

  "WinPrint.print();"

  "WinPrint.close();"

  "prtContent.innerHTML=strOldOne;"

"}"

"script>"

 

Observe que a função JavaScript pega todo o conteúdo da DIV e o imprime em uma nova janela do browser. Como a div cerca o grid, todo o Grid será copiado.

Enfim, basta criarmos em um botão/link a chamada para esta função JavaScript :

 

"<input type="text" ID="btnPrint" onClick="javascript:CallPrint('divPrint');" Runat=Server />"

 

Existem outras opções para a criação deste botão :

·         O evento poderia ser adicionado via Attributes.add, no código ASP.NET

·         O link/botão poderia ser adicionado no rodapé do Grid, através do evento itemCreated do Grid

 

OBS: Remova o caracter " " do código