请问一个DataGrid,没有分页,有下拉条(用DIV做的),无分页,点击某项页面刷新后,DataGrid能记住其滚动条位置使其仍能滚动到刷新前的位置

解决方案 »

  1.   

    <div id="Layer1" style="position:absolute; width:700px; height:500; z-index:4; layer-background-color: #999999; border: 1px none #000000; overflow-x: scroll;">
    <asp:datagrid ...../>
    </div>
    overflow:scroll      为横纵都有滚动条;
    overflow-x:scroll    为横滚动条;
    overflow-y:scroll    为纵滚动条;
      

  2.   

    我收藏的,没有实践过
    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();
      

  3.   

    楼上的,好象是页面的滚动条,我想要一个在页面中的<DIV>的
      

  4.   

    记住页面的位置与层的位置,具体方法如下:
    /// <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之外。
      

  5.   

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

  6.   

    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
      

  7.   

    smartnavigation = true
      

  8.   

    有一些第三方的grid控件的,楼主可以找一下!