Mantenga la posición de desplazamiento del panel en la devolución parcial de datos ASP.NET
updatepanel postback (2)
Agregue MaintainScrollPositionOnPostback = "true" a su directiva de página.
Tengo un gridview que puso en el panel de ASP.NET. Tanto el panel como Gridview están en un UpdatePanel. hay una columna en gridview que causa parciales PostBacks. Quiero mantener la posición de desplazamiento del panel en esas devoluciones. ¿Hay alguna manera? Saludos.
No hay una facilidad incorporada para resolverlo en asp.net
Sin embargo, hay una solución para este problema; Necesitas manejarlo con javascript.
La solución se menciona aquí: mantener la posición de la barra de desplazamiento dentro de UpdatePanel después de un envío parcial
Editado el 20 de mayo de 2012; despues de ver los comentarios
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" />
<script type="text/javascript">
// It is important to place this JavaScript code after ScriptManager1
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args) {
if ($get(''<%=Panel1.ClientID%>'') != null) {
// Get X and Y positions of scrollbar before the partial postback
xPos = $get(''<%=Panel1.ClientID%>'').scrollLeft;
yPos = $get(''<%=Panel1.ClientID%>'').scrollTop;
}
}
function EndRequestHandler(sender, args) {
if ($get(''<%=Panel1.ClientID%>'') != null) {
// Set X and Y positions back to the scrollbar
// after partial postback
$get(''<%=Panel1.ClientID%>'').scrollLeft = xPos;
$get(''<%=Panel1.ClientID%>'').scrollTop = yPos;
}
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" Height="300">
<%-- Some stuff which would cause a partial postback goes here --%>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
A continuación se muestra la instantánea de código: