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