chiname

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

[推荐]防止页面滚动

自用小经验(1)--防止页面滚动

总结:

通过对引用的东西进行总结,形成了一个通用的函数,不用在aspx页面中进行任何特殊的设置,直接在事件Page_Load中调用该函数即可:
函数描述:防止页面postback时滚动到页顶

 1/// <summary>
 2        /// prevent page to scroll while postback (2006-04-06)
 3        /// </summary>
 4        /// <remarks>
 5        /// e.g.
 6        /// private void Page_Load(object sender, System.EventArgs e)
 7        /// {
 8        ///        CodeHelper.RetainScrollPosition(this);
 9        /// }
10        /// </remarks>
11        /// <param name="page">the instance of current Page</param>

12        public static void RetainScrollPosition(Page page) 
13        
14            StringBuilder saveScrollPosition = new StringBuilder (); 
15            StringBuilder setScrollPosition = new StringBuilder (); 
16 
17            page.RegisterHiddenField("__SCROLLPOS""0"); 
18 
19            saveScrollPosition.Append("<script language='javascript'>"); 
20            saveScrollPosition.Append("function saveScrollPosition() {"); 
21            saveScrollPosition.Append("    document.forms[0].__SCROLLPOS.value = document.body.scrollTop;"); 
22            saveScrollPosition.Append("}"); 
23            saveScrollPosition.Append("document.body.onscroll=saveScrollPosition;"); 
24            saveScrollPosition.Append("</script>"); 
25 
26            page.RegisterStartupScript("saveScroll", saveScrollPosition.ToString()); 
27 
28            if (page.IsPostBack) 
29            
30                setScrollPosition.Append("<script language='javascript'>"); 
31                setScrollPosition.Append("function setScrollPosition() {"); 
32                setScrollPosition.Append("    document.body.scrollTop = " + page.Request["__SCROLLPOS"+ ";"); 
33                setScrollPosition.Append("}"); 
34                setScrollPosition.Append("document.body.onload=setScrollPosition;"); 
35                setScrollPosition.Append("</script>"); 
36 
37                page.RegisterStartupScript("setScroll", setScrollPosition.ToString()); 
38            }
 
39        }



以下为引用别人的东西:

1、在aspx页面给body添加id属性:<body id="thebody" MS_POSITIONING="GridLayout">
2、后台代码(.cs文件)中引用:using System.Text;
3、添加方法:

 

private void RetainScrollPosition()
{
 StringBuilder saveScrollPosition 
= new StringBuilder ();
 StringBuilder setScrollPosition 
= new StringBuilder ();

 RegisterHiddenField(
"__SCROLLPOS""0");

 saveScrollPosition.Append(
"<script language='javascript'>");
 saveScrollPosition.Append(
"function saveScrollPosition() {");
 saveScrollPosition.Append(
"    document.forms[0].__SCROLLPOS.value = thebody.scrollTop;");
 saveScrollPosition.Append(
"}");
 saveScrollPosition.Append(
"thebody.onscroll=saveScrollPosition;");
 saveScrollPosition.Append(
"</script>");

 RegisterStartupScript(
"saveScroll", saveScrollPosition.ToString());

 
if (Page.IsPostBack)
 
{
     setScrollPosition.Append(
"<script language='javascript'>");
  setScrollPosition.Append(
"function setScrollPosition() {");
  setScrollPosition.Append(
"    thebody.scrollTop = " + Request["__SCROLLPOS"+ ";");
  setScrollPosition.Append(
"}");
  setScrollPosition.Append(
"thebody.onload=setScrollPosition;");
  setScrollPosition.Append(
"</script>");

  RegisterStartupScript(
"setScroll", setScrollPosition.ToString());
   }

  }



4、在page_load中调用此方法:
    this.RetainScrollPosition();

posted on 2006-04-04 10:39  把我的欢乐带给你  阅读(145)  评论(0)    收藏  举报