Richiamare funzione JQuery da Code Behind

mercoledì 20 luglio 2011 - 16.26
Tag Elenco Tags  VB.NET  |  .NET 3.5

zseven Profilo | Senior Member

Ciao ragazzi,
come da oggetto ho questo codice

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

che scaturisce al click di un pulsante presente in un updatepanel

<asp:UpdatePanel ID="UpdAjax" runat="server"> <ContentTemplate> <asp:Button ID="Prova" runat="server" Text="Invia" /> </ContentTemplate> </asp:UpdatePanel> <div id="mostra" style="display:none;">aaa</div>

Purtroppo però non succede nulla.
Ho la necessità di lanciare la funzione FadeIn di JQuery da code-behind, in quanto soltanto in una determinata circostanza deve essere eseguita, quindi non soltanto al click del pulsante.
Sapete dirmi come posso risolvere?
Grazie mille
Guido

Gluck74 Profilo | Guru

ci sono 2 errori:

il primo è nello sript (te lo comunico solo per conoscenza, dato che viene annullato correggento il secondo)
l'ultimo parametro booleano della funzione RegisterStartupScript, determina se scrivere o no il tag <script> per lo script js che stai inniettando nella pagina. Siccome hai messo true, la funzione lo scrive, ma siccome lo hai scitto anche tu dentro lo script, in pratica lo scrivi 2 volte, freando di conseguenza un erore.

il secondo errore è di concetto sul funzionamento del partial rendering generato dagli updatepanel.
con l'istruzione RegisterStartupScript tu comunichi ad asp.net di includere IN FONDO ALLA PAGINA uno scritp (è quello che fa questa funzione, contrariamente da quanto potremmo immaginare: startUp -> inizio.... è sbagliato)
Ma essendo il tutto dentro un updatepanel, viene ridisegnata SOLO la parte di pagina inclusa nell'update panel, quindi questo script non verrà mai scritto.

devi sostituire con:
ClientScript.RegisterClientScriptBlock( this.GetType(), "scriptKey", FunzioneFadeIn, true);

Inoltre correggi anche la funzione js: non mi ricordo come si fa, ma devi fare in modo che questa funzione venga chiamata al load (window.load) della pagina.

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

Grazie mille sei stato chiarissimo nella spiegazione e funziona tutto correttamente.
Alla fine è bastato semplicemente utilizzare il RegisterClientScriptBlock e aggiungere il false invece del true.
La funzione JQuery è andata bene già così.

Grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5