Richiamare una funzione prima del postback

martedì 12 luglio 2011 - 11.02

Gemini Profilo | Expert

Ciao a tutti
ho inserito in una pagina un upload multiplo realizzato in jquery.
Dopo ogni upload con una funzione javascript visualizzo l'immagine e inserisco anche un campo text per inserire una descrizione dell'immagine.
Dato che la pagina contiene anche altri controlli che eseguono il postback, ad ogni postback il codice html inserito con javascript viene cancellato.
C'è un modo per richiamare una funzione javascript prima di ogni postback? Considerate che utilizzo una masterpage e non posso inserire l'evento onsubmit nel form perchè la funzione javascript mi serve solo in alcune pagine.
Oppure c'è un modo per non cancellare il codice html ad ogni postback?
Grazie mille

Gluck74 Profilo | Guru

dunque, vediamo se ho capito bene:
tu hai un upload multiplo jquery che carica diversi file e quindi modifica il codice HTML per visualizzare i file caricati.
Nella stessa pagina hai un bottone (o più) che fanno un normale postback, quindi la pagina si ricarica e non vedi più i file caricati (visualizzazione che aveva creato jquery).
giusto?

be, cosa fa questo/questi bottoni di particolare? puoi fargli fare anche a loro una chiamata ajax in modo che non devi ricaricare la pagina?

altrimenti devi implementare una funzione al load della pagina aspx che rilegge i file appena caricati e ricrea la visualizzazione che aveva creato jquery: puoi ricreare la visualizzazione da code-behind o far lanciare una funzione javascript che riesegue quello che aveva fatto jquery.



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

Gemini Profilo | Expert

Ciao
è quello che sto facendo
solo che devo recuperare le eventuali descrizioni che inserisce l'utente prima del postback
ho provato con onsubmit, ma perde tutto. Mentre, se richiamo la funzione per il recupero delle descrizioni al click di un button funziona

Gluck74 Profilo | Guru

risolto?

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

Gemini Profilo | Expert

non proprio
non so perchè, ma alcuni campi che inizializzo con javascript dopo il postback conservano i dati, mentre il campo che inizializzo al click su un button perde i dati al postback.
Sto pensando di richiamare una funzione ajax e di salvare i dati in una session

Gluck74 Profilo | Guru

spiegati meglio, o magari fammi vedere un po di codice.
Cosa intendi per "inizializzo al click"?

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

Gemini Profilo | Expert

al click su controllo asp.net button richiamo questa funzione javascript:
function SalvaDescrizioniPhotoCaricate() {
var hdPhotoCaricateDescrizioni = $get('<%= hdPhotoCaricateDescrizioni.ClientID %>');
hdPhotoCaricateDescrizioni.value = '0';

for (i=0; i<document.forms[0].length; i++)
{
doc = document.forms[0].elements[i];
var type = doc.type;
if (doc.type == "text" && doc.id.indexOf('txtPhoto') != -1)
{
if (hdPhotoCaricateDescrizioni.value) hdPhotoCaricateDescrizioni.value += ', ';
hdPhotoCaricateDescrizioni.value += doc.value;
}
}
}

che mi salva in un campo nascosto le descrizioni che un utente associa ad ogni foto caricata.
Al postback, in base ai dati salvati nei campi nascosti mi ricostruisco la visualizzazione delle foto caricate.

Gluck74 Profilo | Guru

scusa una cosa, tu hai l'elenco delle foto caricate, ed ognuna ha una textbox dove l'utente può inserire la descrizione.
Sono queste che ti perdi nel normale postBack?

Be, te le perdi anche se le sposti nei campi nascosti. Il fatto è che asp.net ti permette di accedere ai dati tramite gli oggetti tipizzati (esempio this.txtNumero1.text) solo se gli oggetti sono costruiti nella pagina asp.net e quindi sono presenti anche nel viewState (anzi, controlState).
Siccome i contolli tu li hai messi invecie nel codice HTML tramite javascript, lato server non puoi vederli, ma puoi sempre ricavare i valori:

basta ricordarsi del vecchio asp, ovvero del funzionamento standard delle richeste.
Tutti i controlli che tu hai inserito via javascript, comunque sono controlli, e comunque inviano dati tramite la form. Cercali nel Request.Form[] e vedrai che ci sono comuqnue tutti.

Ciao

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