可能我们会经常遇到这种情况,当页面内容比较多的时候,当用户执行操作执行一次页面回送后,页面又重新从顶端开始显示,用户不得不重新拖动滚动条回到先前的位置,这会给用户带来很不友好的体验。即时使用updatepanel也会有这种情况。
幸好,asp.net提供了MaintainScrollPositionOnPostback属性,可以彻底帮助我们解决这一问题。
只需在asp.net页面的Page指令中设置MaintainScrollPositionOnPostback="true"就可以轻松实现。
请记住MaintainScrollPositionOnPostback属性的默认值为false。
另外asp.net的page对象还有一个SmartNavigator属性,可以完成相同的功能。SmartNavigator属性只能在后台代码中设置,asp.net建议使用MaintainScrollPositionOnPostback代替SmartNavigator。
MaintainScrollPositionOnPostback保持树状态
关于ASP.NET里TreeView控件,我把TreeView控件放在一个有上下滚动条大小固定的DIV里,当展开一个节点,页面自动回发,滚动条又自动跳到了最顶端,假如里面有很多节点,我希望展开底部某个节点后滚动条始终能保持在那里不要回到顶端。
<%@ Page Language="C#" AutoEventWireup="true" MaintainScrollPositionOnPostback="true" CodeBehind="default.aspx.cs" Inherits="WebApplication1._default" %>
也就是在Page指令里加入了MaintainScrollPositionOnPostback="true"