none
tela splash não para de carregar RRS feed

  • Pergunta

  • Eae galera, blz?
    Seguinte, tenho no meu sistema um splash que sempre que a página dá um post é apresentada uma tela de "Carregando", fiz de acordo com o que está neste link http://www.devmedia.com.br/asp-net-web-forms-exibindo-uma-mensagem-de-aguarde/8691

    Porém, tenho um botão onde faço um download de uma planilha excell:

    Response.ContentType = "application/xls";
    
                Response.AddHeader("content-disposition", "attachment; filename=Planilha.xls");
    
                Response.TransmitFile(@"Documentos\Planilha.xls");
                       
                Response.End();

    quando clico nesse botão o download até é feito, porém a tela de "Carregando" continua aparecendo.

    Tenho que pressionar F5 para a página voltar ao normal.

    Alguém sabe como posso retirar essa tela de splash ao termino do download ?

    Estou utilizando Asp.Net com C#

    quinta-feira, 14 de janeiro de 2016 16:01

Todas as Respostas

  • Olá, no final do processo de download coloque o seguinte codigo para fechar a splash screen:

    Response.AddHeader("content-disposition", "attachment; filename=Planilha.xls");
    
                Response.TransmitFile(@"Documentos\Planilha.xls");
                       
                Response.End();
    
    
                    ClientScript.RegisterStartupScript(
    				typeof(Page),
    				"TiraDivAguarde",
    				"if(document.getElementById('divProcessando')) document.getElementById('divProcessando').style.display = 'none';",
    				true);
    
    



    If the answer was helpful vote

    • Sugerido como Resposta Jean LLopes quinta-feira, 14 de janeiro de 2016 16:50
    quinta-feira, 14 de janeiro de 2016 16:50
  • a tela de splash continua rodando, tem alguma maneira de eu forçar o postBack ?

    Coloquei um Breack Point e verifiquei que o sistema para em Response.End() e não sai dalí.

    quinta-feira, 14 de janeiro de 2016 17:18
  • Então vamos forçar usando a seguinte maneira:

                // define as variaveis do client scripts on the page.
                String csname1 = "PopupScript";
                Type cstype = this.GetType();
                ClientScriptManager cs = Page.ClientScript;
    
                String cstext1 = "document.getElementById('divProcessando').style.display = 'none'";
                cs.RegisterStartupScript(cstype, csname1, cstext1, true);
    
                //responde para o HTML com o arquivo
                Response.AddHeader("content-disposition", "attachment; filename=Planilha.xls");
                Response.TransmitFile(@"Documentos\Planilha.xls");
                Response.End();
    

    Caso ainda apresente algum ´problema no download consulte isso:

    stackoverflow.com/questions/16558317/how-to-download-memorystream-to-a-file


    If the answer was helpful vote

    • Sugerido como Resposta Jean LLopes quinta-feira, 14 de janeiro de 2016 17:44
    quinta-feira, 14 de janeiro de 2016 17:44
  • Ola, acredito que o caminho neste caso seja remover via JS mesmo, já que após o response.end o servidor finaliza o retorno.

    $(window).bind('beforeunload', function () { 
       if (document.getElementById('divProcessando')) {
           //FAZ ALGO
       }
    });

    Faça testes com o beforeunload para tentar remover o div de processamento.

    http://stackoverflow.com/questions/8276619/how-can-i-display-an-alert-after-response-end


    Rodrigo Reis Ferreira
    Microsoft Certified

    • Sugerido como Resposta Ricardo dos Sntos quinta-feira, 4 de fevereiro de 2016 05:21
    quinta-feira, 14 de janeiro de 2016 17:46
  • Acho que a resposta do amigo Rodrigo seja a melhor alternativa!

    Lembre de marcar como resposta se resolveu o problema!

    quinta-feira, 4 de fevereiro de 2016 05:21