Domanda

Esiste un modo per eseguire lo script al termine di un processo UpdatePanel.

Ho una pagina che consente di "inserire", "copiare" e "modificare" di un record. Questo viene fatto su un UpdatePanel per impedire la navigazione di una pagina. Da qualche altra parte della pagina vorrei stampare un "flash". tipo messaggio " Hai inserito correttamente un record. " Non è vicino a UpdatePanel e mi piacerebbe usare un effetto jQuery sul messaggio in modo che svanisca dopo 4 secondi. Come posso restituire lo script con UpdatePanel o eseguirlo dopo un aggiornamento UpdatePanel? Dovrei scrivere una sceneggiatura su un asp: letterale? pensieri?

È stato utile?

Soluzione

Si

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

E poi:

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

Documentazione qui e qui . Tieni presente che questo si attiverà per ogni richiesta AJAX sulla pagina.

Altri suggerimenti

Questo dovrebbe fare il trucco:

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

Ecco un articolo su come farlo usando il metodo statico RegisterClientScriptBlock di ScriptManager. Provato e funziona come un fascino.

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

Il metodo Sys.WebForms.PageRequestManager.getInstance () funziona benissimo anche per me.

Lavoro con molte pagine che contengono più Updatepanel e ho imparato che questo si attiverà automaticamente anche se Updatepanel non lo desidera per gli aggiornamenti. Quindi, all'interno della funzione che attiva l'evento, assicurati di avere qualcosa del tipo:

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

Bruno,

Innanzitutto, per rispondere alla tua domanda diretta. Nel callback che viene chiamato dal pannello di aggiornamento, dovresti essere in grado di utilizzare una chiamata RegisterStartupScript per richiamare un metodo JS. Quindi nel tuo metodo JS, mostreresti il ??messaggio e poi puoi usare do a:

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

per farlo svanire dopo 4 secondi.

Per fare un ulteriore passo avanti, poiché stai già implementando JavaScript, ti invito a dare un'occhiata a questo articolo su UpdatePanels . Se possibile, proverei a inviare chiamate Ajax per eseguire l'inserimento, la copia e la modifica e ciò semplificherebbe ulteriormente il feedback degli utenti e impedirebbe l'eccesso di informazioni attraverso il cavo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top