ASP.NET mantener la posición del scroll después de un postback

aspnetEn paginas web con mucho contenido vertical, hace que estas sean muy largas, y al hacer un postback, el scroll se ha situado al principio de esta. Esto se convierte en un engorro para el usuario, lo que resta navegabilidad y usabilidad a la pagina.

La idea es poder dejar la pagina en la misma posición de scroll, cuando el usuario haga un postback. Para conseguirlo, se pueden usar tres métodos, uno global de la aplicación Web y el resto específico a cada página:

  • En el archivo de configuración web.config, ubique la sección <pages> y agregue el siguiente atributo estableciendo a su valor a “true”:
    maintainScrollPositionOnPostBack="true"

    Lo anterior mantendrá la posición del scroll para todas las páginas web de sitio.

  • En la declaración a nivel de página (@Page), agregue el atributo homólogo al anterior con el mismo valor:
    <%@ Page MaintainScrollPositionOnPostback="true" %>

    Con esto se mantiene la posición del scroll únicamente para la página en cuestión.

  • Si se requiere realizarlo mediante código, se puede utilizar:
    System.Web.UI.Page.MaintainScrollPositionOnPostBack = true;

    Lo cual es equivalente a realizarlo en la declaración a nivel de página.

20 pensamientos en “ASP.NET mantener la posición del scroll después de un postback

  1. Beatriz

    tendrás el metodo para mantener el scroll de un panel al hacer postback. tengo un panel y dentro y gridview que edito y al llenar de nuevo lo carga y lo deja con el scroll arriba y no en el elemento que estoy editando, el scroll lo tengo en el panel.
    gracias.

    Responder
  2. Carlos Mora

    Perfecto!!! Después de ver y leer un montón de páginas que daban soluciones que no sirven, me encuentro esta, corta, efectiva, directa. Muchas gracias.

    Responder
  3. Marcelo

    Tengo el mismo problema que Beatriz , nececito mantener el dentro de un asp panel con scroll que contiene dentro un gridview..

    Responder
  4. Elvis W.

    Muy buena la ayuda ahora el problema que tengo es que esto no funciona en chrome, alguien sabe como hacer esto mismo pero que funcione en Chrome???? No lo probe en el firefox pero en el Chrome no funciona

    Responder
  5. Daniel

    Hola, una preguntita, tengo en mi proyecto un objeto ASPNetAudio el cual utilizo para reproducir un sonido en forma de loop de fondo. Al hacer postback dicho objeto se carga nuevamente haciendo que el sonido se corte y empiece de cero. Hay alguna forma de que esto no ocurra? de que el postback no influya sobre ese objeto en particular de la pagina pero si sobre los otros?

    Responder
  6. Luis

    tendrás el metodo para mantener el scroll de un panel al hacer postback. tengo un panel y dentro y gridview que edito y al llenar de nuevo lo carga y lo deja con el scroll arriba y no en el elemento que estoy editando, el scroll lo tengo en el panel.
    gracias. El mismo problema alguien tiene la solucion????

    Responder
  7. max

    esta propiedad antes se llamaba smartnavigation=true como arte de magia dejo de andar y buscando me encontre con esta y anda

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *