Question

Existe-t-il un moyen d'exécuter le script lorsqu'un processus UpdatePanel est terminé?

J'ai une page qui permet "l'insertion", "la copie" et "l'édition". d'un record. Tout cela est fait sur un UpdatePanel pour empêcher une navigation de page. Ailleurs sur la page, j'aimerais imprimer un "flash". comme un message "Vous avez entré un enregistrement avec succès". Il ne se trouve pas près de UpdatePanel et j'aimerais utiliser un effet jQuery sur le message pour qu'il disparaisse au bout de 4 secondes. Comment envoyer un script avec UpdatePanel ou le faire exécuter après une actualisation de UpdatePanel? Dois-je écrire le script sur un asp: literal? pensées?

Était-ce utile?

La solution

Oui:

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

Et ensuite:

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

Documentation ici et ici . N'oubliez pas que cela se déclenchera à chaque demande AJAX de la page.

Autres conseils

Cela devrait faire l'affaire:

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

Voici un article expliquant comment procéder à l'aide de la méthode statique de ScriptManager, RegisterClientScriptBlock. Je l'ai essayé et fonctionne comme un charme.

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') });

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

La méthode Sys.WebForms.PageRequestManager.getInstance () fonctionne également très bien pour moi.

Je travaille avec un grand nombre de pages contenant plusieurs Updatepanels et j'ai appris que cela se déclencherait automatiquement même si Updatepanel ne le souhaitait pas pour les actualisations. Donc, dans la fonction qui se déclenche sur l’événement, assurez-vous d’avoir quelque chose comme:

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

Bruno,

Tout d'abord, pour répondre à votre question directe. Dans votre rappel appelé par le panneau de mise à jour, vous devriez pouvoir utiliser un appel RegisterStartupScript pour appeler une méthode JS. Ensuite, dans votre méthode JS, vous affichez le message et vous pouvez ensuite utiliser:

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

pour qu'il disparaisse après 4 secondes.

Pour aller encore plus loin, puisque vous utilisez déjà JavaScript, je vous invite à consulter cet article sur UpdatePanels . Si possible, j’essayerais d’envoyer des appels Ajax pour effectuer votre insertion, votre copie et votre édition, ce qui simplifierait davantage les commentaires de vos utilisateurs et éviterait des informations superflues sur le réseau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top