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

Pergunta
-
Sei que
window.open()
será aberto aurl
em uma nova janela e que owindow.location.href()
será aberta na página chamadora. Acontece que quando eu uso owindow.location.href()
, coloquei no page_load uma chamada javascript(alert()
) pelo codebehind
e não disparou. Porém, essa página(chamada) gera umexcel
e isso está acontecendo, funcionando perfeitamente. Coloquei um loading nela(noapsx
) 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 osalerts
deveriam ser disparados ou não?Em realidade, o que eu preciso é que enquanto os dados do banco são carregados, preciso disparar um
loading
. Se oloading
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
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; } }
-
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