Posts filed under ‘formularios’

MaintainScrollPositionOnPostback

Muchas veces nos habremos visto en la necesidad de volver a un punto de la página después de hacer un postback para que el usuario no tuviera que utilizar el scroll lateral.

Normalmente yo suelo utilizar un focus() en javascript si se trata de un formulario y lo añado con ClientScript.RegisterClientScriptBlock. El problema es cuando no hay ningún elemento al que hacer foco (un input o textarea por lo general).

Esto funciona. Quizás no es elegante. Al mismo tiempo hay que meterlo por código y quizás no va en la filosofía de .NET de automatizar con un código además optimizado.

Actualmente esto que yo hacía por código en .NET se haría con <control >: .Focus().

No obstante, puede optimizarse más, y para eso viene en nuestra ayuda el atributo MaintainScrollPositionOnPostback que podemos añadir a la directiva Page de nuestro html. Esto hará que se guarde la posición exacta en píxeles en unos hidden y se restaurará automáticamente mediante javascript.

Con esto se genera lo siguiente en el html:

<input type=”hidden” name=”__SCROLLPOSITIONX” id=”__SCROLLPOSITIONX” value=”0″ />

<input type=”hidden” name=”__SCROLLPOSITIONY” id=”__SCROLLPOSITIONY” value=”257″ />

theForm.oldSubmit = theForm.submit;

theForm.submit = WebForm_SaveScrollPositionSubmit;

theForm.oldOnSubmit = theForm.onsubmit;

theForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;

theForm.oldOnLoad = window.onload;

window.onload = WebForm_RestoreScrollPosition;

// –>

Si queréis alternar el comportamiento de la página para que a veces lo haga y otras no, en vez de desactivar este comportamiento, Scott Mitchell nos lo explica para que funcione a las mil:
http://aspnet.4guysfromrolla.com/articles/111407-1.aspxEste enlace abre una nueva ventana

Anuncios

septiembre 25, 2015 at 3:26 pm Deja un comentario


Categorías

octubre 2019
L M X J V S D
« Sep    
 123456
78910111213
14151617181920
21222324252627
28293031  

Entradas recientes

Mis links en del.icio.us

Feeds