2011-07-05 29 views
9

Tengo algunos problemas con asp.net y el panel de actualización. El problema es que cada vez que se produce una devolución de datos parcial desde el panel de actualización, la página se desplaza hacia atrás. En la mayoría de mis páginas, este no es un problema tan grande, pero en algunas páginas puede ser bastante largo. Luego, cuando el usuario está en la parte inferior de la página, muestro jQuery popup con RadListView y el usuario puede seleccionar el elemento en esta lista. Pero al hacer clic en este elemento se produce una devolución de datos parcial y la página vuelve a la parte superior.Mantener la posición de desplazamiento después de la devolución de datos asincrónica desde el panel de actualización

He revisado Internet y no he podido encontrar ninguna solución a mi problema. Por supuesto, configurar MaintainScrollPositionOnPostback no hace nada.

¿Alguien sabe algo que podría ayudarme a lidiar con este problema?

Saludos, Pako

+1

duplicado: http://stackoverflow.com/questions/5288682/maintain-panel-scroll-position-on- partial-postback-asp-net – Despertar

+0

... o de [Restablecer la posición de desplazamiento después de la devolución de datos de Async - ASP.NET] (http://stackoverflow.com/questions/616210/reset-scroll-position-after-async-postback-asp- red) – Bergi

Respuesta

0

utilizar el ID de un cierto control en el repetidor y el uso de jQuery para desplazarse después de que se completó la devolución de datos.

Puede obtener la ID de algún control según el formato que están generando.

1

Hay una pequeña solución para esto, que he usado en un ERP hace mucho tiempo. No estoy seguro de si es la mejor solución, pero funciona.

No sé si usa una clase de página personalizada o la System.Web.UI.Page predeterminada, pero intentaré explicarte cómo lo haces y luego descubrirás la mejor manera de implementarla en su entorno, ¿de acuerdo?

Creará un HiddenField, por ejemplo, con el ID "hfScrollPosition".

Luego, creará un evento javascript: document.onscroll o algo así, y dentro del evento actualizará el campo oculto para obtener la posición de desplazamiento actual. Por ejemplo: document.getElementById("hfScrollPosition").value = document.documentElement.scrollTop;

Al hacer eso, tendrá un control ASP.NET actualizando dinámicamente su valor, de acuerdo con la posición de desplazamiento del cuerpo. Por lo tanto, cuando un cierto control en su página hace una devolución de datos, se puede poner el siguiente código JavaScript en el evento Page_Load:

document.documentElement.scrollTop = document.getElementById("hfScrollPosition").value;

Así, cada vez que la página recibe una devolución de datos, la posición de desplazamiento del cuerpo se actualiza correctamente .


EDITAR: He hecho un violín para simularlo: https://jsfiddle.net/j26fpgzo/

Cuestiones relacionadas