none
Impressão via código - ReportViewer RRS feed

  • 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

    quinta-feira, 22 de julho de 2010 19:15

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 !

     

    Rafael Zaccanini

    Se a resposta de ajudou marque como útil

     

    sexta-feira, 23 de julho de 2010 13:17

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
    quinta-feira, 22 de julho de 2010 20:41
    Moderador
  • quinta-feira, 22 de julho de 2010 20:44
    Moderador
  • Não, to usando web !
    quinta-feira, 22 de julho de 2010 22:10
  • 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 !

     

    Rafael Zaccanini

    Se a resposta de ajudou marque como útil

     

    sexta-feira, 23 de julho de 2010 13:17