none
Control Template para de dar postback depois que redireciono para uma pop-up RRS feed

  • Pergunta

  • Olá, eu tenho um controle com uma lista de arquivos que um usuário pode baixar. Ele está inserido na minha master page. Toda vez que um cliente seleciona o arquivo e clica no botão de download, eu redireciono ele para uma pop com o arquivo. Faço isso através desse atributo no botão:

    OnClientClick="aspnetForm.target ='_blank';"

    E esse é o code behind(estou usando C# e fazendo download de arquivos que estão no Sharepoint):

    Response.Redirect(WebUtil.MountUrl("/" + listItem.Url));

    OBS: Essa WebUtil.MountUrl é uma classe minha que foi feita para pegar o endereço completo do site Sharepoint, já que o SPListItem não possui a Url completa.

    Enfim, quando eu clico em baixar, realmente o download acontece. Porém, dpois que eu clico no botão para baixar, todo o postback no meu control template desaparece. Não consigo mais realizar nenhuma tarefa que precise do postback.

    Alguem tem alguma idéia?

    quarta-feira, 3 de outubro de 2012 20:49

Respostas

  • Eu consegui fazer funcionar através de uma gambiarra uaehuea olha ae:

       hl1.NavigateUrl = WebUtil.MountUrl("/" + listItem.Url);
                                hl1.Target = "_blank";
                                Page page = HttpContext.Current.CurrentHandler as Page;
                                page.ClientScript.RegisterStartupScript(GetType(), "doclick", "<script language='JavaScript'>document.getElementById('" + hl1.ClientID + "').click();</script>");

    Eu coloquei um link na página e coloquei o navigate dele a url do item que eu quero baixar e através do ClientScript, eu chamei a função click dele!

    • Marcado como Resposta Daniel Camboim quinta-feira, 4 de outubro de 2012 20:57
    quinta-feira, 4 de outubro de 2012 20:57

Todas as Respostas

  • A razão disso é que você está redirecionando o usuário... o response.redirect manda ele para outra página. Você perdeu a antiga.

    Talvez seja mais interessante você ao invés de utilizar popup, abrir uma nova aba com o Download.

    Abraços,


    André Baltieri
    MTAC – Microsoft Technical Audience Contributor

    Twitter: @andrebaltieri
    Blog: http://andrebaltieri.net

    quarta-feira, 3 de outubro de 2012 21:12
  • E como eu faço isso?
    quarta-feira, 3 de outubro de 2012 22:21
  • Eu consegui fazer funcionar através de uma gambiarra uaehuea olha ae:

       hl1.NavigateUrl = WebUtil.MountUrl("/" + listItem.Url);
                                hl1.Target = "_blank";
                                Page page = HttpContext.Current.CurrentHandler as Page;
                                page.ClientScript.RegisterStartupScript(GetType(), "doclick", "<script language='JavaScript'>document.getElementById('" + hl1.ClientID + "').click();</script>");

    Eu coloquei um link na página e coloquei o navigate dele a url do item que eu quero baixar e através do ClientScript, eu chamei a função click dele!

    • Marcado como Resposta Daniel Camboim quinta-feira, 4 de outubro de 2012 20:57
    quinta-feira, 4 de outubro de 2012 20:57