Salvare posizione scroll durante Async Postback

martedì 01 ottobre 2013 - 13.14

vankraster Profilo | Newbie

Salve, Vi espongo il problema:
Ho una galleria prodotti che non è a pagine ma si caricano 20 a volta mano mano che l'utente scorre la scrollbar in giù, il mio problema e che quando richiamo la funzione del caricamento di altri 20 prodotti metti caso sono ad altezza 300px, mentre lui carica io scorro ancora ed arrivo all'altezza 400px quando lui ha finito di caricare mi riporta all'altezza 300px non a 400 dove stavo io, ho provato anche con MaintainScrollPositionOnPostBack="true", io vorrei che lui non mi riposizionase all'altezza 300px ma a 400px, per me sarebbe meglio se lui proprio ignorasse del tutto il riposizionamento dello scroll in altezza, così uando lui ha finito di ricaricare i prodotti dove sto sto, li rimango.

alx_81 Profilo | Guru

>Salve, Vi espongo il problema:
ciao

>io vorrei che lui non mi riposizionase all'altezza 300px ma a
>400px, per me sarebbe meglio se lui proprio ignorasse del tutto
>il riposizionamento dello scroll in altezza, così uando lui ha
>finito di ricaricare i prodotti dove sto sto, li rimango.
vedi se questo può aiutarti
http://weblogs.asp.net/andrewfrederick/archive/2008/03/04/maintain-scroll-position-after-asynchronous-postback.aspx
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

vankraster Profilo | Newbie

Ho provato ma non funziona ... stessa cosa... mi riporta alla posizione da dove ha avuto inizio il postback..

alx_81 Profilo | Guru

>Ho provato ma non funziona ... stessa cosa... mi riporta alla
>posizione da dove ha avuto inizio il postback..
in teoria dovrebbe tenersi in mente la posizione.. hai provato a debuggare?
perchè da quel che vedo, la posizione prima di partire dovrebbe essere salvata, e poi, alla fine ripresa.
Prova a mettere qualche alert e a fare un po' di debug.

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

vankraster Profilo | Newbie

Il codice funziona ma non fa quello che serve a me, ho provato a modificare il cursore ...
<script type="text/javascript"> var yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { yPos = $('body').scrollTop(); $('body').css('cursor', 'progress'); } function EndRequestHandler(sender, args) { $('body').scrollTop(yPos); $('body').css('cursor', 'default'); } </script>

in effetti il cursore cambia ma alla fine il la pagina torna sempre li perche:
quando entra in BeginRequestHandler io sono all'altezza 300 mi ci vuole 1s per fare i calcoli poi torna in EndRequestHandler ma io intanto sono andato più giu all'altezza 400 ma mi ritorna a 300 perche io ho salvato quel valore... a me serve salvare i valori intermezzi ...e poi ripristinare

alx_81 Profilo | Guru

>in effetti il cursore cambia ma alla fine il la pagina torna
>sempre li perche:
>quando entra in BeginRequestHandler io sono all'altezza 300 mi
>ci vuole 1s per fare i calcoli poi torna in EndRequestHandler
>ma io intanto sono andato più giu all'altezza 400 ma mi ritorna
>a 300 perche io ho salvato quel valore... a me serve salvare
>i valori intermezzi ...e poi ripristinare
Hai provato alla change dello scroll ad aggiornare il valore di quelle var?
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

vankraster Profilo | Newbie

Ho risolto... grazie
A chi servisse in futuro ecco la risposta:

var yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { //xPos = $('body').scrollLeft(); //yPos = $('body').scrollTop(); $('body').css('cursor', 'progress'); } function EndRequestHandler(sender, args) { //$('body').scrollLeft = xPos; $(window).scrollTop(yPos); $('body').css('cursor', 'default'); } $(window).scroll(function () { yPos = $(window).scrollTop(); });

alx_81 Profilo | Guru

>Ho risolto... grazie
se ritieni che la risposta ti abbia aiutato, accettala così chiudiamo il thread.
ciao e grazie a te
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5