发生任何事件后如何保留浏览器滚动位置

问题描述

| 当我单击任何按钮时,我的页面正在重新加载并且页面位置正在更改。 第一页在底部滚动,然后在顶部再次向下移动。 在任何事件单击上刷新页面后,如何保持滚动位置不变。 我试过了
Page.MaintainScrollPositionOnPostBack = true;
在我的页面上加载,但无法正常工作。 使用ajax updatepanel后,我的浏览器卡住了,性能非常慢。 我有一个aspx页面,因为我正在调用5个Web用户控件。 请任何人帮助我.. 在任何事件单击上刷新页面后,如何保持滚动位置不变。     

解决方法

您是否尝试过在页面上以声明方式设置MaintainScrollPositionOnPostBack属性,
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"test.aspx.cs\"
    Inherits=\"test\" MaintainScrollPositionOnPostback=\"true\" %>
    ,看过这篇文章异步回发后保持滚动位置 并在异步回发后检查此线程重置滚动位置-ASP.NET     ,我使用了更新面板以及此脚本,它对我来说效果很好。
 <script>
    var xPos,yPos;
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender,args) {
        xPos = document.getElementById(\"<%=Panel4.ClientID %>\").scrollLeft;
        yPos = document.getElementById(\"<%=Panel4.ClientID %>\").scrollTop;
    }
    function EndRequestHandler(sender,args) {
        document.getElementById(\"<%=Panel4.ClientID %>\").scrollLeft = xPos;
        document.getElementById(\"<%=Panel4.ClientID %>\").scrollTop = yPos;
    }
 </script>