<script language="javascript"> function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; }function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function SetCookie (name, value) { document.cookie = name + "=" + escape (value) } </script>在body中加入 <body bgColor="#f1f5f5" leftMargin="0" topMargin="0" rightMargin="0" MS_POSITIONING="GridLayout" onload="document.body.scrollTop=GetCookie('posy')" onunload="SetCookie('posy',document.body.scrollTop)">
http://expert.csdn.net/Expert/topic/2991/2991206.xml?temp=.9256098 Keeping Scroll Position over post Backs: http://aspalliance.com/articleViewer.aspx?aId=356&pId=1 http://dotnet.aspx.cc/ShowDetail.aspx?id=0C25068E-55EA-4124-8CD6-726ECF5D5D3B http://expert.csdn.net/Expert/topic/2747/2747150.xml?temp=.1869013
<asp:datagrid ...../>
</div>
overflow:scroll 为横纵都有滚动条;
overflow-x:scroll 为横滚动条;
overflow-y:scroll 为纵滚动条;
1、在aspx页面为body添加id属性:<body id="thebody" MS_POSITIONING="GridLayout">
2、后台代码(.cs文件)中引用:using System.Text;
3、添加方法:
#region "防止页面滚动"
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());
}
}
#endregion4、在page_load中?用此方法:
this.RetainScrollPosition();
/// <summary>
/// 保存div与页面滚动条的位置
/// 『创建者:小朱【[email protected]】
/// 创建日期:2004-12-07 15:40
/// 修改日期:2004-12-08 16:24
/// 修 改 人:朱书彦【[email protected]】
/// 修改原因:传入数组参数,任何具有滚动条的对象』
/// </summary>
/// <param name="divId">DIV的ID数组</param>
public static void RetainScrollPosition(string[] divId)
{
System.Web.UI.Page page=(Page)HttpContext.Current.Handler; string saveScrollPosition = "";
string setScrollPosition = "";
string saveScrollPositionDiv = "";
string setScrollPositionDiv = "";
#region 保存页面滚动条的状态
page.RegisterHiddenField("__SCROLLPOS_TOP","0");
page.RegisterHiddenField("__SCROLLPOS_LEFT","0");
saveScrollPosition = "document.forms[0].__SCROLLPOS_TOP.value = {0}.scrollTop;document.forms[0].__SCROLLPOS_LEFT.value = {0}.scrollLeft;";//}{0}.onscroll=saveScrollPosition;</script>";
setScrollPosition = "{0}.scrollTop ='{1}';{0}.scrollLeft ='{2}';";//}{0}.onload=setScrollPosition;</script>";
saveScrollPosition = string.Format(saveScrollPosition,"window.document.body");
setScrollPosition = string.Format(setScrollPosition,"window.document.body", page.Request.Form["__SCROLLPOS_TOP"],page.Request.Form["__SCROLLPOS_LEFT"]);
#endregion #region 保存divId的位置
for (int i = 0; i < divId.Length; i++)
{
page.RegisterHiddenField(divId[i].ToString() + "_TOP","0");
page.RegisterHiddenField(divId[i].ToString() + "_LEFT","0");
saveScrollPositionDiv = "<script language='javascript'>function saveScrollPosition" + divId[i].ToString() + "() {{document.all('" + divId[i].ToString() + "_TOP').value = {0}.scrollTop;document.all('" + divId[i].ToString() + "_LEFT').value = {0}.scrollLeft;}}{0}.onscroll=saveScrollPosition" + divId[i].ToString() + ";</script>";
setScrollPositionDiv += "{0}.scrollTop = {1};{0}.scrollLeft = {2};"; saveScrollPositionDiv = string.Format(saveScrollPositionDiv,"window.document.all('" + divId[i].ToString() + "')");
page.RegisterStartupScript("saveScroll" + divId[i].ToString(), saveScrollPositionDiv); setScrollPositionDiv = string.Format(setScrollPositionDiv,"window.document.all('" + divId[i].ToString() + "')", page.Request.Form[divId[i].ToString() + "_TOP"],page.Request.Form[divId[i].ToString() + "_LEFT"]);
}
#endregion
#region 注册客户端脚本
saveScrollPosition = "<script language='javascript'>function saveScrollPosition() {{" + saveScrollPosition + "}}{0}.onscroll=saveScrollPosition;</script>";
page.RegisterStartupScript("saveScroll", string.Format(saveScrollPosition,"window.document.body")); if(page.IsPostBack)
{
setScrollPosition = "<script language='javascript'>function setScrollPosition() {{" + setScrollPosition + setScrollPositionDiv + "}}{0}.onload=setScrollPosition;</script>";
page.RegisterStartupScript("setScroll", string.Format(setScrollPosition,"window.document.body"));
//page.RegisterStartupScript("setScrollDocument", string.Format(setScrollPosition,"window.document.body", page.Request.Form["__SCROLLPOS_TOP"],page.Request.Form["__SCROLLPOS_LEFT"]));
}
#endregion
}使用方法要放在Page.IsPostBack之外。
function GetCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie (name, value)
{
document.cookie = name + "=" + escape (value)
}
</script>在body中加入
<body bgColor="#f1f5f5" leftMargin="0" topMargin="0" rightMargin="0" MS_POSITIONING="GridLayout" onload="document.body.scrollTop=GetCookie('posy')" onunload="SetCookie('posy',document.body.scrollTop)">
Keeping Scroll Position over post Backs:
http://aspalliance.com/articleViewer.aspx?aId=356&pId=1
http://dotnet.aspx.cc/ShowDetail.aspx?id=0C25068E-55EA-4124-8CD6-726ECF5D5D3B
http://expert.csdn.net/Expert/topic/2747/2747150.xml?temp=.1869013