农民写代码

在小小键盘实现大大的梦想
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在asp.net 页面中,如果页面很长的话,那么默认在PostBack 之后,页面的位置会回到滚动条的最顶端。(当然如果使用ajax另论,这里不讨论ajax)

那么如何在 PostBack之后还是回到PostBack之前的位置了?

 

在Asp.net 1.1 之前,可以使用SmartNavigation ,但是在SmartNavigation经常的会产生很多的问题,如css 失效之类的(我自己的遇到的)

 

在asp.net 2.0 以后,我们很简单,可以使用MaintainScrollPositionOnPostback  这个page指令。

 

具体方法:

1: 在page 指令把MaintainScrollPositionOnPostback 设为true。

    如:

    <%@ Page  MaintainScrollPositionOnPostback="true"   %>

2: 在代码里面设置   

     protected void Page_Load(object sender, EventArgs e)
    {

        Page.MaintainScrollPositionOnPostBack = true;
    }

 

3:在web.config 里面统一设置 ( 推荐使用这种方法,不用每个页面都设置一次)

 <system.web>

      <pages maintainScrollPositionOnPostBack="true"></pages>

 </system.web>

  

 

 

在asp.net页面 PostBack以后,页面的滚动条会默认会滚到页面的最顶端。

在页面的 page 指令里面的,把MaintainScrollPositionOnPostback 属性设为true  页面回调的时候,还是会回到之前的页面。

 

如:

 <%@ Page  MaintainScrollPositionOnPostback="true"   Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Buffer="false" %>

 

 MaintainScrollPositionOnPostback  属性 在C#高级编程里面,解释为:

   带一个boolean值,表示在回送页面时,页面是位于相同的滚动位置上,还是在最高的位置上重新生成页面。