Ciao a tutti,
ho un problemino con VB.NET che mi sta facendo perdere un sacco di tempo, e che al momento non ho ancora trovato una soluzione decente.
Allora... faccio il punto della situazione:
- Ho una pagina che deve visualizzare una serie di immagini, inizialmente vengono mostrate tutte le immagini in formato icona, e poi dopo il click su una di esse deve comparire in una certa posizione l'immagine zummata.
Per rendere il tutto un pò più carino tutta questa parte di pagina viene caricata in un updatepanel.
- Sempre in questa pagina, ho la procedura che fa i dovuti calcoli, preleva le immagini piccole e la grande, aggiorna il contenuto ed in fine aggiorna l'updatepanel.
- Per rendere il progetto un pò più modulare, la funzione che crea la struttura e mi ridà un oggetto tabella, l'ho pioppata dentro ad una bella classe, che vado ad istanzionare all'occorrenza, chiamiamola immagini.
Il problema:
Allora premetto che il codice non da errori (aimè), ma pare che l'unica cosa che non funziona sia l'aggiornamento dell'updatepanel.
Cmq, non appena la pagina viene aperta cosa succede:
- Nella pagina ascx ho un certo numero di oggetti tra cui un immagine che se cliccata mi fa comparire nell'updatepanel l'album delle foto.
L'updatepanel contiene un oggetto panel, con un certo id, che al momento giusto vi andrò ad inserire un control table.
- Nel page_load creo tutti i dovuti control, tra cui l'immagine da cliccare per aprire l'album, chiamiamola zoom.
- Nel codebehind della pagine ascx, c'è una funzione che intercetta i click all'immagine zoom, e nel caso, richiama la funzione contenuta nella classe immagini, gli passa gli opportuni parametri, questa funzione torna un oggetto table che contiene il tutto bella pronto, vado ad inserire questa tabella nell'oggetto panel dentro l'updatepanel ed in fine dopo varie azioni, aggiorno l'updatepanel (.update).
La struttura inserita dentro l'updatepanel e creata dinamicamente, contiene N immagini piccole che anche queste devono avere un handler, che in caso di click richiamano la procedura del codebehind che a sua volta richiama la funzione dalla classe immagini ed infine aggiorna l'updatepanel.
Andando diretti al problema, cliccando sulle immagini piccole, si vede che il caricamento della procedura parte, ma alla fine non si aggiorna nulla, come se l'aggiornamento dell'updatepanel non partisse (.update).
Ora, dato che la funzione nella classe immagini, deve creare la struttura e quindi anche le immagini ed i relativi handler, c'è il problema che non posso fare un addhandler e farlo puntare alla procedura del codebehind della pagina ascx, perchè giustamente non si vedono.
Per fare questo ho provato 2 vie, la prima di creare l'oggetto immagine nel codebehind, assegnargli l'handler e poi passare per riferimento alla funzione della classe immagini l'indirizzo di questa immagini, la quale viene presa e caricata senza essere ricreata, e quindi conservando l'handler, ma non funzionava.
La seconda prova che ho fatto è stata di passare per riferimento alla funzione della classe immagini direttamente l'eventhandler, e quindi la prodecura di gestione, in modo da avere un collegamento diretto con la procedura del codebehind, ma anche questa non funziona.
Ora, io non capisco perchè il contenuto dell'updatepanel non mi si aggiorna, tutte le immagini puntano (direttamente o indirettamente) alla procedura che fa i suoi calcoli ed infine richiama l'update, ma è come se questa cosa non ci fosse.
Potrebbe essere che la chiamata di update debba essere fatta da un oggetto esterno all'updatepanel? non penso...
Oppure potrebbe essere che, anche passando per riferimento l'handler alla funzione della classe immagini, che lo assegna alle immagini create, in realtà non funziona???
Io sto facendo un pò di prove, ma non avendo errori, non so proprio da che parte iniziare, o meglio finire, perchè ormai le ho provate tutte.
Sono cmq quasi convinto che le immagini dentro l'updatepanel riescono a richiamare, tramite handler, la procedura del codebehind, anche perchè il loader della pagina mi indica che un operazione asincrona è in esecuzione, ma poi non succede nulla... sono quasi convinto che il problema è l'updatepanel che non si aggiorna a fine procedura...
HELP!!!