在PostBack之后维护网格视图中div的滚动条位置

cgv*_*val 4 c# asp.net scroll gridview

我在web.config中使用了以下代码,以便在服务器回发后维护滚动条位置:

<pages maintainScrollPositionOnPostBack="true" >
</pages>
Run Code Online (Sandbox Code Playgroud)

一切正常,但现在我有一个gridview封装在一个div中,div中有一个滚动条(内部滚动条).

当在gridview内的其中一行上发生事件时,内部滚动条不像外部滚动条那样保持其原始位置.

有任何想法吗?

cgv*_*val 16

备查:

正常的过程是在web.config文件中写入以下内容:

  <system.web>
    <pages maintainScrollPositionOnPostBack="true" >
    </pages>
  </system.web>
Run Code Online (Sandbox Code Playgroud)

这将保留所有网页的滚动条位置.

如果在gridview(或div)中有滚动条,则使用以下脚本:

<script type="text/javascript">
    window.onload = function () {
        var strCook = document.cookie;
        if (strCook.indexOf("!~") != 0) {
            var intS = strCook.indexOf("!~");
            var intE = strCook.indexOf("~!");
            var strPos = strCook.substring(intS + 2, intE);
            document.getElementById("grdWithScroll").scrollTop = strPos;
        }
    }
    function SetDivPosition() {
        var intY = document.getElementById("grdWithScroll").scrollTop;
        document.cookie = "yPos=!~" + intY + "~!";
    }
</script>
Run Code Online (Sandbox Code Playgroud)

div必须如下:

<div id="grdWithScroll" …………  onscroll="SetDivPosition()">
Run Code Online (Sandbox Code Playgroud)

http://michaelsync.net/2006/06/30/maintain-scroll-position-of-div-using-javascript-aspnet-20

  • onscroll有时可能会出现性能问题,因为它在用户滚动时会多次运行.根据导航方法,您可以在某些点击事件上调用SetDivPosition(),以便在离开页面之前将cookie设置一次.当点击div中的任何链接时,我在页面上使用了您的实现,并将其附加如下:$(function(){$('#myDivID a').click(function(){SetDivPosition();}); }); (2认同)