ASP.NET - UpdatePanel e JavaScript
-
03-07-2019 - |
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?
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') });
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.