今天看了:http://community.csdn.net/Expert/topic/5330/5330457.xml?temp=.3798029
里面的
2. 在刷新和提交页面后,保存你的页面滚动条的位置 经常有这样的情况,我们需要用户提交一个表单,但是表单中有超过500+个?控件或文本框要填写,也就是说用户需要拉动IE的滚动条才能够填得完,那么假如用户正在可见IE范围的2/3处,选择了一个组合框的值,很不幸组合框是服务器端的,那么也就意味着页面会提交一次,而当用户再看见刷新过的页面时,页面确定在3/1的地方也就是显示在页面最开始的地方,用户只有拖动鼠标,然后接着刚刚的地方再填写剩下的250个控件,很不幸,370个控件又需要他选择一下? 用下面的方法可以很快地确定和记住你提交前的位置。 网上的Old Dog Learns New Tricks也有一个类似的例子Maintain Scroll Position in any Page Element,不过他使用了Web Behavior这意味着你需要使用一个.htc文件Private Sub RetainScrollPosition()Dim saveScrollPosition As New StringBuilder
Dim setScrollPosition As New StringBuilderRegisterHiddenField("__SCROLLPOS", "0")
saveScrollPosition.Append("<script language='javascript'>")
saveScrollPosition.Append("function saveScrollPosition() {")
saveScrollPosition.Append(" document.forms[0].__SCROLLPOS.value = document.body.scrollTop;")
saveScrollPosition.Append("}")
saveScrollPosition.Append("document.body.onscroll=saveScrollPosition;")
saveScrollPosition.Append("</script>")RegisterStartupScript("saveScroll", saveScrollPosition.ToString())If (Page.IsPostBack = True) ThensetScrollPosition.Append("<script language='javascript'>")
setScrollPosition.Append("function setScrollPosition() {")
setScrollPosition.Append(" document.body.scrollTop = " & Request("__SCROLLPOS") & ";")
setScrollPosition.Append("}")
setScrollPosition.Append("document.body.onload=setScrollPosition;")
setScrollPosition.Append("</script>")
RegisterStartupScript("setScroll", setScrollPosition.ToString())End IfEnd SubPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RetainScrollPosition()
End Sub 我感觉很有用就写成了C#的
如下
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 = document.body.scrollTop;");
saveScrollPosition.Append("}");
saveScrollPosition.Append("document.body.onscroll=saveScrollPosition;");
saveScrollPosition.Append("</script>"); RegisterStartupScript("saveScroll", saveScrollPosition.ToString()); if (Page.IsPostBack)
{
setScrollPosition.Append("<script language='javascript'>");
setScrollPosition.Append("function setScrollPosition(){");
setScrollPosition.Append(" document.body.scrollTop = " + Request["__SCROLLPOS"] + ";");
setScrollPosition.Append("}");
setScrollPosition.Append("document.body.onload=setScrollPosition;");
setScrollPosition.Append("</script>");
RegisterStartupScript("setScroll", setScrollPosition.ToString());
}
}
但运时的时候提示脚本错误大家看哪里出错了
里面的
2. 在刷新和提交页面后,保存你的页面滚动条的位置 经常有这样的情况,我们需要用户提交一个表单,但是表单中有超过500+个?控件或文本框要填写,也就是说用户需要拉动IE的滚动条才能够填得完,那么假如用户正在可见IE范围的2/3处,选择了一个组合框的值,很不幸组合框是服务器端的,那么也就意味着页面会提交一次,而当用户再看见刷新过的页面时,页面确定在3/1的地方也就是显示在页面最开始的地方,用户只有拖动鼠标,然后接着刚刚的地方再填写剩下的250个控件,很不幸,370个控件又需要他选择一下? 用下面的方法可以很快地确定和记住你提交前的位置。 网上的Old Dog Learns New Tricks也有一个类似的例子Maintain Scroll Position in any Page Element,不过他使用了Web Behavior这意味着你需要使用一个.htc文件Private Sub RetainScrollPosition()Dim saveScrollPosition As New StringBuilder
Dim setScrollPosition As New StringBuilderRegisterHiddenField("__SCROLLPOS", "0")
saveScrollPosition.Append("<script language='javascript'>")
saveScrollPosition.Append("function saveScrollPosition() {")
saveScrollPosition.Append(" document.forms[0].__SCROLLPOS.value = document.body.scrollTop;")
saveScrollPosition.Append("}")
saveScrollPosition.Append("document.body.onscroll=saveScrollPosition;")
saveScrollPosition.Append("</script>")RegisterStartupScript("saveScroll", saveScrollPosition.ToString())If (Page.IsPostBack = True) ThensetScrollPosition.Append("<script language='javascript'>")
setScrollPosition.Append("function setScrollPosition() {")
setScrollPosition.Append(" document.body.scrollTop = " & Request("__SCROLLPOS") & ";")
setScrollPosition.Append("}")
setScrollPosition.Append("document.body.onload=setScrollPosition;")
setScrollPosition.Append("</script>")
RegisterStartupScript("setScroll", setScrollPosition.ToString())End IfEnd SubPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RetainScrollPosition()
End Sub 我感觉很有用就写成了C#的
如下
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 = document.body.scrollTop;");
saveScrollPosition.Append("}");
saveScrollPosition.Append("document.body.onscroll=saveScrollPosition;");
saveScrollPosition.Append("</script>"); RegisterStartupScript("saveScroll", saveScrollPosition.ToString()); if (Page.IsPostBack)
{
setScrollPosition.Append("<script language='javascript'>");
setScrollPosition.Append("function setScrollPosition(){");
setScrollPosition.Append(" document.body.scrollTop = " + Request["__SCROLLPOS"] + ";");
setScrollPosition.Append("}");
setScrollPosition.Append("document.body.onload=setScrollPosition;");
setScrollPosition.Append("</script>");
RegisterStartupScript("setScroll", setScrollPosition.ToString());
}
}
但运时的时候提示脚本错误大家看哪里出错了
解决方案 »
- Ajaxpro问题
- 请问往数据库里插入的时候,是否需要同步处理??
- asp.net能调用标准DLL吗?不用注册的那种,不是COM。
- 如何理解数据访问抽象类?
- ASP.net 中调用存储过程的问题
- 搞不懂的ASP.NET????
- 关于asp.net变量存储的问题
- 在datalist中显示新闻标题,如何做到此新闻有图后面加个(图)
- 多人博客系统BlogEngine源码&建博经验分享
- 我在窗口中添加了一textbox控个,在网页load的时,将textbox赋值为0,现在有一个这样的问题,就是我自己输入的数据,单击添加时,textbox
- ASP.NET(C#)转码问题???????????????与其它的不一样!
- ASP.NET文件下载
<SCRIPT LANGUAGE="JavaScript">
<!--
//页面加载时,重新定位页面位置
function loadscroll()
{
var loc = document.all("txtscroll").value;
window.mybody.scrollTop = loc;
//页面初始加载滚动条无变化始Supplier选择控件获取焦点
if (parseInt(loc) == 0)
{
document.getElementById("Supplier").focus();
}
} //当页面位置发生变化时,改变控件值
function startonscroll()
{
document.all("txtscroll").value = window.mybody.scrollTop;
} //-->
</SCRIPT>
</HEAD>
<body id="mybody" onLoad="loadscroll();" onscroll="startonscroll();">body中放一个隐藏框
<INPUT id="txtscroll" type="hidden" name="txtscroll" value="0" runat="server">即可
<form id="form1" runat="server">
<asp:HiddenField ID="txtscroll" runat="server" />
<script language="JavaScript">
<!--
//页面加载时,重新定位页面位置
function loadscroll()
{
var loc = document.all("txtscroll").value;
window.mybody.scrollTop = loc;
//页面初始加载滚动条无变化始Supplier选择控件获取焦点
if (parseInt(loc) == 0)
{
document.getElementById("Supplier").focus();
}
} //当页面位置发生变化时,改变控件值
function startonscroll()
{
document.all("txtscroll").value = window.mybody.scrollTop;
} //-->
</script>以上无产效哪里出错了
<script language="JavaScript">
<!--
//页面加载时,重新定位页面位置
function loadscroll()
{
var loc = document.all("txtscroll").value;
window.mybody.scrollTop = loc;
//页面初始加载滚动条无变化始Supplier选择控件获取焦点
if (parseInt(loc) == 0)
{
document.getElementById("Supplier").focus();
}
} //当页面位置发生变化时,改变控件值
function startonscroll()
{
document.all("txtscroll").value = window.mybody.scrollTop;
} //-->
</script>
</FORM>
<SCRIPT language="javascript">
<!--
function Form1.onsubmit()
{
Form1.hidPos.value = document.body.scrollTop;
}
function window.onload()
{
document.body.scrollTop = parseInt(Form1.hidPos.value);
}
//-->
</SCRIPT>
<!--
function form1.onsubmit()
{
form1.hidPos.value = document.body.scrollTop;
}
function window.onload()
{
document.body.scrollTop = parseInt(form1.hidPos.value);
}
//-->
</SCRIPT>
</head> </table>
<INPUT type="hidden" id="hidPos" runat="server">
</form></body>
</html>
没有反应
我加
function form1.onsubmit()
{
form1.hidPos.value = document.body.scrollTop;
alert(document.body.scrollTop);
}
function window.onload()
{
document.body.scrollTop = parseInt(form1.hidPos.value);
alert(parseInt(form1.hidPos.value));
}
也没有alert
把我说的 脚本的 那 部分 放到 <head></head>之间 即可
<!--
//页面加载时,重新定位页面位置
function loadscroll()
{
alert(document.all("txtscroll").value);
var loc = document.all("txtscroll").value;
window.mybody.scrollTop = loc;
//页面初始加载滚动条无变化始Supplier选择控件获取焦点
if (parseInt(loc) == 0)
{
document.getElementById("Supplier").focus();
}
} //当页面位置发生变化时,改变控件值
function startonscroll()
{
alert(document.all("txtscroll").value);
document.all("txtscroll").value = window.mybody.scrollTop;
} //-->
</script></head>
<body id="mybody" onload="loadscroll();" onscroll="startonscroll();">
<form id="form1" runat="server">
<asp:HiddenField ID="txtscroll" runat="server" />
没有alert()
<head runat="server">
<title>无标题页</title>
<script language="JavaScript">
<!--
//页面加载时,重新定位页面位置
function loadscroll()
{
var loc = document.all("txtscroll").value;
window.mybody.scrollTop = loc;
//页面初始加载滚动条无变化始Supplier选择控件获取焦点
if (parseInt(loc) == 0)
{
document.getElementById("Supplier").focus();
}
} //当页面位置发生变化时,改变控件值
function startonscroll()
{
document.all("txtscroll").value = window.mybody.scrollTop;
} //-->
</script></head>
<body>
<form id="form1" runat="server">
<asp:HiddenField ID="txtscroll" runat="server" /> <div>
<br/>
<br/>
<br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/>
</div>
</form>
</body>
</html>
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="_2003.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<TITLE>WebForm2</TITLE>
<META name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<META name="CODE_LANGUAGE" Content="C#">
<META name="vs_defaultClientScript" content="JavaScript">
<META name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<BODY MS_POSITIONING="GridLayout">
<FORM id="Form1" method="post" runat="server">
<ASP:BUTTON id="Button2" style="Z-INDEX: 101; LEFT: 164px; POSITION: absolute; TOP: 1099px"
runat="server" Text="Button"></ASP:BUTTON>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
ddddddd
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
dddddddddddddd
<INPUT type="hidden" id="hidPos" runat="server">
</FORM>
<SCRIPT language="javascript">
<!--
function Form1.onsubmit()
{
Form1.hidPos.value = document.body.scrollTop;
}
function window.onload()
{
document.body.scrollTop = parseInt(Form1.hidPos.value);
}
//-->
</SCRIPT>
</FONT>
</BODY>
</HTML>
但是
<body id="mybody" onload="loadscroll();" onscroll="startonscroll();">
其中的onscroll="startonscroll();">
在页面中没有执行
因为我加多了一个alert('')没有反应
又是VS2005的问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
改成
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
两个方案就都可以了我真不知道VS2005那个有什么用
他那个让我的很多js代码都不可以用
上次的JS也是这个问题