Cómo posicionar verticalmente una página después de un PostBack


En ocasiones tenemos un control de ASP.NET (por ejemplo un DataGrid o un DataPager) que está posicionado verticalmente en la mitad de una página, lo que significa que el visitante tuvo que haber desplazado la barra de desplazamiento (scrollbar) hacia abajo para llegar a ese punto. Si este control realiza un PostBack, cuando la página regresa al navegador, se muestra la parte superior de la página, sacando al visitante de contexto ya que tendría que volver a utilizar la barra de desplazamiento para visualizar el control. Esto no es nada amigable.

Para realizar el salto al punto vertical que decidas, coloca en ese lugar un ancla:

ASP:
  1. <a name="proyectos" />

Después agrega en el code-behind de tu página este procedimiento:

VB.NET:
  1. Private Sub RegistraScriptParaAncla(ByVal strAnchorID As String)
  2.         Dim Script As String = ""
  3.         Script &= "<script language=JavaScript id='BookMarkScript'>" & vbCrLf
  4.         Script &= "var hashValue='#" & strAnchorID & "';" & vbCrLf
  5.         Script &= "if(location.hash!=hashValue)" & vbCrLf
  6.         Script &= "location.hash=hashValue;" & vbCrLf
  7.         Script &= "</script>" & vbCrLf
  8.         If (Not Page.ClientScript.IsStartupScriptRegistered("BookMarkScript")) Then
  9.             Page.ClientScript.RegisterStartupScript(Me.GetType(), "BookMarkScript", Script)
  10.         End If
  11. End Sub

Ahora, en alguna parte de tu code-behind que se ejecute en el PostBack, por ejemplo, al presionar un botón o la liga de un paginador, manda a llamar la función, de esta manera:

VB.NET:
  1. RegistraScriptParaAncla("proyectos")

Puedes tener varias anclas y hacer que la página se desplace a diferentes puntos basado en diferentes condiciones.

Este truco funciona perfectamente y el crédito es para el autor (y los que comentaron) de este post.

  1. No hay Comentarios
(No será publicado)