Pergunta

Existe uma maneira de executar script quando um processo de UpdatePanel está terminado.

Eu tenho uma página que permite a "inserção", "copiar" e "edição" de um registro. Isso tudo é feito em um UpdatePanel para evitar a navegação da página. Em outro lugar na página que eu gostaria de imprimir uma mensagem de "Flash" - como "Você entrou com sucesso um registro." Não é perto do UpdatePanel e eu gostaria de usar um efeito jQuery na mensagem para que ele desaparece após 4 segundos. Como posso enviar roteiro de volta com o UpdatePanel ou tê-lo executado após uma atualização UpdatePanel? Devo escrever script para um asp: literal? pensamentos?

Foi útil?

Solução

Sim:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

E, em seguida:

function endRequestHandler(sender, args)
{
  // Do stuff
}

aqui e aqui . Tenha em mente que isso irá disparar para cada solicitação AJAX na página.

Outras dicas

Isso deve fazer o truque:

       <script type="text/javascript">
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);

            function BeginRequestHandler(sender, args) 
            {
                 //Jquery Call
            }

            function EndRequestHandler(sender, args) 
            {
                 //Jquery Call

            }
        </script> 

Aqui está um artigo para saber como fazê-lo usando o método RegisterClientScriptBlock estática do ScriptManager. Tentei e funciona como um encanto.

http://csharperimage.jeremylikness.com /2009/06/inject-dynamic-javascript-into-aspnet.html

var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_beginRequest(function () { alert('here1') });
requestManager.add_endRequest(function () { alert(here2') });

Fonte: http://www.howtositecore.com/?p=36

O método Sys.WebForms.PageRequestManager.getInstance () funciona muito bem para mim também.

Eu trabalho com um monte de páginas que contêm vários Updatepanels e eu aprendi que isso irá disparar automaticamente mesmo se o UpdatePanel que você não quer que ele para atualizações. Então, dentro da função que os incêndios no make evento se você tem algo como:

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here

Bruno,

Em primeiro lugar, para responder a sua pergunta direta. Em seu retorno de chamada que está sendo chamado pelo painel de atualização, você deve ser capaz de usar uma chamada RegisterStartupScript para invocar um método JS. Então, em seu método JS, você iria mostrar a mensagem e, em seguida, você pode usar fazer a:

setTimeout('$('#myMessage').fadeOut("slow")', 4000);

para tê-lo desaparecer após 4 segundos.

Para ir um passo mais longe, uma vez que já está implementando JavaScript, gostaria de convidá-lo para verificar este artigo sobre UpdatePanels . Se possível, gostaria de tentar enviar Ajax chamadas para fazer a sua inserção, copiando e editando e isso iria simplificar ainda mais o seu feedback do usuário e evitaria o excesso de informações através do fio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top