none
Abrir uma nova pagina web RRS feed

  • Pergunta

  • Bom dia pessoal.

    1 - Estou exportando um relatorio para pdf no browser, mas quando eu clico no botão a pagina carrega o relatorio em pdf. Preciso que quando eu clique no botão abra o relatorio em uma nova aba...

    2 - Estou usando tambem um menu com sitemap.

    Como eu faço para quando clicar no menu, abra um nova pagina para a pagina que eu quero ir, e não simplesmente redirecione o link, e carregue a pagina em cima da outra.

    Obrigado.

    sexta-feira, 8 de julho de 2011 14:15

Respostas

  • Ola, boa noite.

    Você pode fazer da seguinte forma:

    Na sua queryString, ao invez de enviar somente um parametro, adicione todos os parametros em uma string e separe por ";" ponto e virgula por exemplo.

    Na pagina que vai gerar o relatorio, você pode utilizar o Split para separar os parametros e montar as consultas:

    Veja como utilizar o split:

    http://msdn.microsoft.com/en-us/library/b873y76a.aspx

     

    Agora, não sei como esta montando o seu relatorio, se é via codigo Query Sql mesmo ou esta utilizando algum framework como o Linq ou NHibernate ?

     

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    • Marcado como Resposta Harley Araujo sexta-feira, 15 de julho de 2011 15:00
    terça-feira, 12 de julho de 2011 02:14
  • fino dmais.

    Funcionou do jeito que eu precisava.

    vlew


    Ola, boa noite.

     

    Que bom que solucionou seu problema. 

    Você poderia marcar a resposta para finalizar a Thread

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    • Marcado como Resposta Pedrohgb7 sexta-feira, 15 de julho de 2011 18:35
    sexta-feira, 15 de julho de 2011 00:48

Todas as Respostas

  • Para salvar:

    Tente utilizar Response.WriteFile("ARQUIVO.PDF"); que será exibida uma janela para salvar o arquivo.

    Veja um exemplo em: http://www.linhadecodigo.com.br/artigo/1496/For%C3%A7ando-o-download-de-arquivos-em-ASPNET.aspx

    Para abrir:

    Você pode usar javascript para abrir no browser em outra aba:


    <a href="#" onclick="window.open('http://meusite.com/ARQUIVO.PDF')">Link PDF</a>


    Rodolfo Paoni

    sexta-feira, 8 de julho de 2011 14:33
  • Ja estou exportando pra pdf, a duvida é como abrir em outra aba.

    Quando eu clico no botão para exportar para pdf, carrega esta mesma pagina com o relatorio em pdf, preciso que quando eu clique no botão, abra outra aba com o relatorio em pdf.

    obrigado

    sexta-feira, 8 de julho de 2011 18:07
  • Se você colocar este atributo no botão, dá pra fazer:

    onclick="window.open('http://meusite.com/ARQUIVO.PDF')"

    Se não funcionar, posta o trecho do código do seu botão pra dar uma olhada...


    Rodolfo Paoni
    sexta-feira, 8 de julho de 2011 19:56
  • Desculpa, mas não sei usar javascript

    O codigo no botão esta este, chama um metodo para carregar o relatorio pela data;

     

    DateTime data = dtdataParada.Date;

     

    String.Format("{0:dd/MM/yyyy}", data); // "03/09/2008"

    Rel_ParadaData(data.Date);

    onclick="window.open('http://meusite.com/ARQUIVO.PDF')"  /// se eu colocar o codigo aqui da erro!

    Aonde eu devo colocar?

    Obrigado

    sexta-feira, 8 de julho de 2011 20:28
  • Ola, boa noite.

    Bom, para que o browser abra uma nova aba você deve passar um comando para ele entender isso, para isso utiliza-se o target:

    http://www.w3schools.com/tags/att_a_target.asp

    Bom, no seu caso pelo que parece, o metodo:

    Rel_ParadaData(data.Date);
    

    É quem gera o seu relatorio, uma maneira que vejo sempre e funciona é o seguinte:

    1. Crie uma nova pagina aspx, coloque o codigo que gera o relatorio no seu Page_Load();
    2. No botão da sua pagina que vai gerar o relatorio, dispare um evento que chame a pagina .aspx em uma nova aba.

    Você pode passar os parametros por querystring por exemplo:

    ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "openRelatorio", "open('GeradorRelatorio.aspx?Data=" + String.Format("{0:dd/MM/yyyy}", data)+ "')", true);
    


    Este codigo ficaria no botão, e depois na nova pagina criada, basta fazer um Request na queryString Data e processar o relatorio.

     

    Veja se ajuda, duvidas post um feedback

     

    ;) até mais.

     


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    segunda-feira, 11 de julho de 2011 00:24
  • ok, funcionou do jeito que precisa. file..

    Agora tenho outra duvida.

    Tenho varios relatorios, com diversos filtros, Vou ter que criar uma pagina então para cada relatório?

    As vezes é o mesmo relatorio rpt, mas tem filtros diferentes,

    Então a unica opção será eu criar uma pagina para cada relatorio?

    Se for assim, vou ter que criar umas 15 a 20 paginas em branco so para os relatorios;

    Obrigado

    segunda-feira, 11 de julho de 2011 20:21
  • Ola, boa noite.

    Você pode fazer da seguinte forma:

    Na sua queryString, ao invez de enviar somente um parametro, adicione todos os parametros em uma string e separe por ";" ponto e virgula por exemplo.

    Na pagina que vai gerar o relatorio, você pode utilizar o Split para separar os parametros e montar as consultas:

    Veja como utilizar o split:

    http://msdn.microsoft.com/en-us/library/b873y76a.aspx

     

    Agora, não sei como esta montando o seu relatorio, se é via codigo Query Sql mesmo ou esta utilizando algum framework como o Linq ou NHibernate ?

     

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    • Marcado como Resposta Harley Araujo sexta-feira, 15 de julho de 2011 15:00
    terça-feira, 12 de julho de 2011 02:14
  • fino dmais.

    Funcionou do jeito que eu precisava.

    vlew

    sexta-feira, 15 de julho de 2011 00:41
  • fino dmais.

    Funcionou do jeito que eu precisava.

    vlew


    Ola, boa noite.

     

    Que bom que solucionou seu problema. 

    Você poderia marcar a resposta para finalizar a Thread

     

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/ ;)
    • Marcado como Resposta Pedrohgb7 sexta-feira, 15 de julho de 2011 18:35
    sexta-feira, 15 de julho de 2011 00:48
  • ok, funcionou do jeito que precisa. file..

    Agora tenho outra duvida.

    Tenho varios relatorios, com diversos filtros, Vou ter que criar uma pagina então para cada relatório?

    As vezes é o mesmo relatorio rpt, mas tem filtros diferentes,

    Então a unica opção será eu criar uma pagina para cada relatorio?

    Se for assim, vou ter que criar umas 15 a 20 paginas em branco so para os relatorios;

    Obrigado

    Pedro se sua pergunta foi respondida favor marcar a resposta, e se tiver alguma nova dúvida abrir um nova thread.

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    sexta-feira, 15 de julho de 2011 11:52
    Moderador
  • Boa Tarde,

    estou com um problema parecido. Veja:

    Uso o ReportView no Chrome. A opção de imprimir não está ativa. Por isso, estou criando uma solução para o cliente "Imprimir". O que eu faço é criar um PDF e chamar a impressão ao msm tempo. Com o código que tenho funcionou. Mas o problema aconteceu quando precisei abrir o PDF em outra aba.

    Veja o meu código:

            ReportViewer relat = repview;
            Microsoft.Reporting.WebForms.ReportDataSource ReportDataSource_rds = new Microsoft.Reporting.WebForms.ReportDataSource("dstRelat", dst.Tables[0]);
            relat.LocalReport.DataSources.Clear();
    
            relat.LocalReport.DataSources.Add(ReportDataSource_rds);
    
            relat.LocalReport.Refresh();
    
            Warning[] warnings;
    	string[] streamids;
    	string mimeType;
            string encoding;
            string extension;
    
            byte[] bytes = relat.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
                   
            Response.ContentType = mimeType;
            Response.AppendHeader("content-Diposition", "inline: filename=TrainingOfficialRecord." + extension);
                
            PdfAction action = new PdfAction();
            action.Put(new PdfName("Type"), new PdfName("Action"));
            action.Put(new PdfName("S"), new PdfName("Named"));
            action.Put(new PdfName("N"), new PdfName("Print"));
    
            PdfReader reader = new PdfReader(bytes);
    
            PdfStamper stamper = new PdfStamper(reader, Response.OutputStream);
            stamper.Writer.NewPage();
            stamper.Writer.CloseStream = false;
            stamper.Writer.SetOpenAction(action);
            stamper.Close();
    
            Response.End();
    

    Tenho um dataset com dados do Banco de Dados. Monto o relatório no ReportViewer e já o transformo em PDF. Mas quero abri-lo em outra aba.

    Vi a sua solução de encaminhar para outra página .aspx. Mas como vou mandar o dataset ou o relatório já feito para essa nova página?

    Obrigado!

    terça-feira, 6 de janeiro de 2015 16:10