Usuário com melhor resposta
Control Template para de dar postback depois que redireciono para uma pop-up

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?
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
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 -
-
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