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

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


Categorías

mayo 2020
L M X J V S D
 123
45678910
11121314151617
18192021222324
25262728293031

Entradas recientes

Mis links en del.icio.us

Feeds