Usuário com melhor resposta
Impressão via código - ReportViewer

Pergunta
-
e ai Galera blz... seguinte tenho uns relatorios Reportviewer gostaria de colocar um botão de impressão igual a da toolbar do Reportviewer .. mas gostaria de fazer a chamada da impressao via codigo... alguem tem algum exemplo ?
Att
- Movido AndreAlvesLimaModerator quinta-feira, 22 de julho de 2010 20:41 (De:.NET Development - Geral)
Respostas
-
Olá Igor,
Se é o que eu entendi você possui alguns relatórios e gostaria de chamar algum deles com um botão e renderizar o mesmo via código, certo ?
Tenta assim:
Você pode passar para a sua página alguns parâmetros via Request.QueryString, vamos supor que você tenha passado o nome do relatório e os códigos dos registros que você quer imprimir separados por um hífen (-).
No Page_Load de sua página você faz o seguinte:
switch (Request.QueryString["nomeRelatorio"]) { #region PROCESSOS case "Relatorio1": <span style="white-space:pre"> </span> string[] listaCodigosPassado = Request.QueryString["codigosParaImprimir"].Split('-'); nomeDataSetTableAdapters.nomeViewOuTableTableAdapter ta = new nomeDataSetTableAdapters.nomeViewOuTableTableAdapter();<br/> nomeDataSet.nomeViewOuTableDataTable dt = new nomeDataSet.nomeViewOuTableDataTable();<br/> for (int i = 0; i < listaCodigosPassado .Length; i++)<br/> dt.Merge(ta.SelecionaPorCod(Convert.ToInt32(listaCodPassado[i]))); //CARREGA O REPORT VIEWER rv.ProcessingMode = ProcessingMode.Local; rv.LocalReport.ReportPath = Server.MapPath(".") + "/" + Request.QueryString["nomeRelatorio"] + ".rdlc";<br/> //rv.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); (CASO VC POSSUA SUB-REPORTS) rv.LocalReport.DataSources.Add(new ReportDataSource("nomeDataSet_nomeViewOuTable", dt));<br/> //PARA CARREGAR O REPORT VIEWER COM PRINT PREVIEW //rv.ShowPrintButton = false; //rv.DataBind(); //CARREGA O REPORT VIEWER SEM PRINT PREVIEW Warning[] warn = null; string[] streaminds = null; string mimeType = "application/pdf"; string encoding = string.Empty; string extension = string.Empty; byte[] byteViewer = null; byteViewer = rv.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streaminds, out warn); Response.Buffer = true; Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "inline; filename=" + "Arquivo" + ".pdf"); Response.BinaryWrite(byteViewer); Response.Flush(); Response.End(); break; #endregion }
Espero ter ajudado !
Se a resposta de ajudou marque como útil
- Sugerido como Resposta AndreAlvesLimaModerator quarta-feira, 28 de julho de 2010 20:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 5 de agosto de 2010 23:22
Todas as Respostas
-
Prezado(a),
Estou migrando seu post para o fórum de Geração de Relatórios.
Por favor, das próximas vezes que for postar alguma dúvida referente a esse assunto, poste por lá.
Obrigado.
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
Igor,
Veja se isto te ajuda:
http://blogs.msdn.com/b/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
-
Olá Igor,
Se é o que eu entendi você possui alguns relatórios e gostaria de chamar algum deles com um botão e renderizar o mesmo via código, certo ?
Tenta assim:
Você pode passar para a sua página alguns parâmetros via Request.QueryString, vamos supor que você tenha passado o nome do relatório e os códigos dos registros que você quer imprimir separados por um hífen (-).
No Page_Load de sua página você faz o seguinte:
switch (Request.QueryString["nomeRelatorio"]) { #region PROCESSOS case "Relatorio1": <span style="white-space:pre"> </span> string[] listaCodigosPassado = Request.QueryString["codigosParaImprimir"].Split('-'); nomeDataSetTableAdapters.nomeViewOuTableTableAdapter ta = new nomeDataSetTableAdapters.nomeViewOuTableTableAdapter();<br/> nomeDataSet.nomeViewOuTableDataTable dt = new nomeDataSet.nomeViewOuTableDataTable();<br/> for (int i = 0; i < listaCodigosPassado .Length; i++)<br/> dt.Merge(ta.SelecionaPorCod(Convert.ToInt32(listaCodPassado[i]))); //CARREGA O REPORT VIEWER rv.ProcessingMode = ProcessingMode.Local; rv.LocalReport.ReportPath = Server.MapPath(".") + "/" + Request.QueryString["nomeRelatorio"] + ".rdlc";<br/> //rv.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); (CASO VC POSSUA SUB-REPORTS) rv.LocalReport.DataSources.Add(new ReportDataSource("nomeDataSet_nomeViewOuTable", dt));<br/> //PARA CARREGAR O REPORT VIEWER COM PRINT PREVIEW //rv.ShowPrintButton = false; //rv.DataBind(); //CARREGA O REPORT VIEWER SEM PRINT PREVIEW Warning[] warn = null; string[] streaminds = null; string mimeType = "application/pdf"; string encoding = string.Empty; string extension = string.Empty; byte[] byteViewer = null; byteViewer = rv.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streaminds, out warn); Response.Buffer = true; Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "inline; filename=" + "Arquivo" + ".pdf"); Response.BinaryWrite(byteViewer); Response.Flush(); Response.End(); break; #endregion }
Espero ter ajudado !
Se a resposta de ajudou marque como útil
- Sugerido como Resposta AndreAlvesLimaModerator quarta-feira, 28 de julho de 2010 20:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 5 de agosto de 2010 23:22