[推荐]防止页面滚动
自用小经验(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
}
/// <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、添加方法:
4、在page_load中调用此方法:
this.RetainScrollPosition();



浙公网安备 33010602011771号