Estuve trabajando con un treeview el cual estaba dentro de un div (que tenía scrolls) y los cuales estan dentro de un UpdatePannel y por cosas del destino tuve que hacer que al pulsar el boton "+" del TreeView ésto me genere un postback dentro del UpdatePannel.
Hasta aquí todo perfecto pero sucedía que como había un postback, los scrolls del div se seteaban a su estado original (arriba y a la derecha) cada vez que hacía clic en el botón "+".
Buscando un poco encontré la solución aquí.
Y resultó ser tan sencillo como agregar éste script LUEGO de cualquier ScriptManager que pueda existir (recomiendo agregarlo al final, justo antes del </body>):
<script type="text/javascript"> var xPos, yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { xPos = document.getElementById('divScrolls').scrollLeft; yPos = document.getElementById('divScrolls').scrollTop; } function EndRequestHandler(sender, args) { document.getElementById('divScrolls').scrollLeft = xPos; document.getElementById('divScrolls').scrollTop = yPos; } </script>
Nota anti dummies: es necesario cambiar el valor de "divScrolls" por el id del control con el que vayan a trabar.
Sólo para explicarlo muy genéricamente, lo que se hace es generar eventos en la página (BeginRequestHandler y EndRequestHandler) para que antes de ejecutar un PostBack se guarden los valores del scroll y luego del PostBack se seteen los valores guardados previamente.
La funcionalidad también se puede trabajar con Jquery reemplazando los
document.getElementById('por
$('#
Depende de los gustos de cada uno =)