今天看了: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());
    }
}
但运时的时候提示脚本错误大家看哪里出错了

解决方案 »

  1.   

    在页面上
    <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">即可
      

  2.   

    <body id="mybody" onload="loadscroll();" onscroll="startonscroll();">
        <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>以上无产效哪里出错了
      

  3.   

    要放到 <head></head>之间....
    <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>
      

  4.   

    <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>
      

  5.   

    <link href="../Frame/images/style.css" type="text/css" rel="stylesheet">    <SCRIPT language="javascript">
    <!--
      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
      

  6.   

    都给你说了 
    把我说的 脚本的 那 部分 放到 <head></head>之间 即可
      

  7.   

    那个 对于 多个 form同样 适用和客户使用的语言无关
      

  8.   

    <script language="JavaScript">
    <!--
    //页面加载时,重新定位页面位置
    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()
      

  9.   

    全新页面
    <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>
      

  10.   

    这是我的全部代码,正确运行。
    <%@ 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>
      

  11.   

    我上面写错了
    但是
    <body id="mybody" onload="loadscroll();" onscroll="startonscroll();">
    其中的onscroll="startonscroll();">
    在页面中没有执行
    因为我加多了一个alert('')没有反应
      

  12.   


    又是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也是这个问题