none
Dúvida quanto a window.location.href(). Página chamada não dispara alerts RRS feed

  • Pergunta

  • Sei que window.open() será aberto a url em uma nova janela e que o window.location.href()será aberta na página chamadora. Acontece que quando eu uso o window.location.href(), coloquei no page_load uma chamada javascript(alert()) pelo code behind e não disparou. Porém, essa página(chamada) gera um excel e isso está acontecendo, funcionando perfeitamente. Coloquei um loading nela(no apsx) e também não disparou, pois a página parece que é executada em background, não sei se isso é verdade, mas é o que parece, mas mesmo assim os alertsdeveriam ser disparados ou não?

    Em realidade, o que eu preciso é que enquanto os dados do banco são carregados, preciso disparar umloading. Se o loading estiver na página chamadora(ele fica visível) quando a página é chamada, ele para enquanto a página chamada é processada. Se eu coloco na página chamada(acredito ser o correto) ele não é mostrado. Quando tudo termina, aí vem o download da planilha.


    Essa é a função que chama a página que carrega a planilha(Observe as várias tentativas no else que eu fiz e nenhuma funcionou.

    function AcaoAvancar() {
    
                if (ValidaFormulario()) {
    
                    var dataInicial = $("#txt_dt_ref_inicial").val();
                    var dataFinal = $("#txt_dt_ref_final").val();
                    var tipoTabela = $('#ddl_tipotabela option:selected').val();
                    var tabelas = RetornaTabelas();
                    var classificacoes = RetornaClassificacoes();
                    var grupos = RetornaGrupos();
                    var autorizacao = $('#ddl_autorizacaoprevia option:selected').val();
                    var formato = $("input[name='formato']:checked").val();
    
                    var strOpcao = "dtinicial=" + dataInicial;
                    strOpcao = strOpcao + "&dtfinal=" + dataFinal;
                    if (tipoTabela != "") { strOpcao = strOpcao + "&tipotab=" + tipoTabela; }
                    if (tabelas != "") { strOpcao = strOpcao + "&tabl=" + tabelas; }
                    if (classificacoes != "") { strOpcao = strOpcao + "&class=" + classificacoes; }
                    if (grupos != "") { strOpcao = strOpcao + "&grp=" + grupos; }
                    if (autorizacao != "") { strOpcao = strOpcao + "&aut=" + autorizacao; }
                    if (formato != "") { strOpcao = strOpcao + "&format=" + formato; }
    
                    if (formato == "PDF")
                        window.location.href = "../../../hes/asp/hes1015b.asp?" + strOpcao;
                    else {
    
                        window.location.href = '../../relatorios/Rel_ItensMaterialMedicamentoExcel.aspx?' + strOpcao;
                        //window.open('../../relatorios/Rel_ItensMaterialMedicamentoExcel.aspx?' + strOpcao);
                        //document.location.href = '../../relatorios/Rel_ItensMaterialMedicamentoExcel.aspx?' + strOpcao;
                        //$("#carregaLoad").load();
                    }
                }
            }



    • Editado pnet terça-feira, 19 de janeiro de 2016 10:34
    terça-feira, 19 de janeiro de 2016 10:32

Todas as Respostas

  • Faltou a parte da página chamada.

    Esse é o Page_Load onde são processados os dados do banco para a planilha. Esse código está na página chamada e é ela que está sendo o meu problema. Veja que coloquei umas chamadas a uns alerts e nenhum foi disparado:

    protected void Page_Load(object sender, EventArgs e)
            {           
                try
                {
    
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "mensagem", "Mensagem()", true);
    
                    //Parametros do filtro
                    string dataInicial = Request.QueryString["dtinicial"];
                    string dataFinal = Request.QueryString["dtfinal"];
                    string tipoTabela = Request.QueryString["tipotab"];
                    string tabela = Request.QueryString["tabl"];
                    string classificacao = Request.QueryString["class"];
                    string grupo = Request.QueryString["grp"];
                    string autorizacao = Request.QueryString["aut"];
    
                    //Carregar Lista de objetos RelatorioItensMatMed
                    List<RelatorioItensMatMed> listaItensMatMed = (new Rel_ItensMaterialMedicamento_BS()).get_Rel_ItensMatMed_BS(dataInicial, dataFinal, tipoTabela, tabela, classificacao, grupo, autorizacao);
    
                    //Preencher os dados do arquivo csv
                    StringBuilder cabecalho = new StringBuilder();
                    cabecalho.Append("Data de Inclusão;");
                    cabecalho.Append("Tipo de Tabela;");
                    cabecalho.Append("Tabela;");
                    cabecalho.Append("Codigo;");
                    cabecalho.Append("TUSS;");
                    cabecalho.Append("Descrição;");
                    cabecalho.Append("Fabricante;");
                    cabecalho.Append("Referência do Fabricante;");
                    cabecalho.Append("Registro ANVISA;");
                    cabecalho.Append("Classificação SIMPRO;");
                    cabecalho.Append("Grupo Mat/Med;");
                    cabecalho.Append("Grupo Estatístico;");
                    cabecalho.Append("Autorização Prévia;");
                    cabecalho.Append("Última Vigência;");
                    cabecalho.Append("Valor;");
                    cabecalho.Append("Prestador Tabela Própria;");
    
                    Response.Write(cabecalho.ToString());
                    Response.Write("\r");
    
                    foreach (var item in listaItensMatMed)
                    {
                        StringBuilder itens = new StringBuilder();
                        itens.Append(item.DataInclusao + ";");
                        itens.Append(item.TipoTabela + ";");
                        itens.Append(item.Tabela + ";");
                        itens.Append("\t" + item.Codigo + ";");
                        itens.Append(item.TUSS + ";");
                        itens.Append(item.Descricao + ";");
                        itens.Append(item.Fabricante + ";");
                        itens.Append(item.ReferenciaFabricante + ";");
                        itens.Append(item.RegistroAnvisa + ";");
                        itens.Append(item.ClassificacaoSimpro + ";");
                        itens.Append(item.GrupoMatMed + ";");
                        itens.Append(item.GrupoEstatistico + ";");
                        itens.Append(item.AutorizacaoPrevisa + ";");
                        itens.Append(item.UltimaVigencia + ";");
                        itens.Append("\t" + item.Valor + ";");
                        itens.Append(item.PrestadorTabelaPropria + ";");
    
                        Response.Write(itens.ToString());
    
                        Response.Write("\r");
                        //Response.Flush();
                    }
    
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "mensagem", "Final()", true);
    
                    Response.ContentType = "text/plain";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=relacao_materiais_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".csv");
                    Response.End();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

    terça-feira, 19 de janeiro de 2016 10:32
  • Bom dia, pnet.

    Acredito que por causa da mudança no Header da página, o script acaba não sendo executado.

    Já tentaste exeutar um alert direto pelo .aspx para verificar se funciona?

    Caso funcione, talvez tu consigas resolver desta forma.


    Att., Rafael Simor

    terça-feira, 19 de janeiro de 2016 13:32