• 页面刷新,保持页面位置


    方法一:

    防止页面滚动#region "防止页面滚动"
    public void RetainScrollPosition(System.Web.UI.Page myPage,string strBodyName)
    {
    StringBuilder saveScrollPosition = new StringBuilder ();
    StringBuilder setScrollPosition = new StringBuilder ();

    myPage.RegisterHiddenField("__SCROLLPOS", "0");

    saveScrollPosition.Append("<script language='javascript'>");
    saveScrollPosition.Append("function saveScrollPosition() {");
    saveScrollPosition.Append("    document.forms[0].__SCROLLPOS.value = " + strBodyName +".scrollTop;");
    saveScrollPosition.Append("}");
    saveScrollPosition.Append( strBodyName + ".onscroll=saveScrollPosition;");
    saveScrollPosition.Append("</script>");

    myPage.RegisterStartupScript("saveScroll", saveScrollPosition.ToString());

    if (myPage.IsPostBack)
    {
    setScrollPosition.Append("<script language='javascript'>");
    setScrollPosition.Append("function setScrollPosition() {");
    setScrollPosition.Append("    " + strBodyName + ".scrollTop = " + myPage.Request["__SCROLLPOS"] + ";");
    setScrollPosition.Append("}");
    setScrollPosition.Append(strBodyName + ".onload=setScrollPosition;");
    setScrollPosition.Append("</script>");

    myPage.RegisterStartupScript("setScroll", setScrollPosition.ToString());
    }
    }
    #endregion


    方法二:
    Page.SmartNavigation = true;

    有可能会造成你页面JavaScript 出错,这是ASP.NET 的一个BUG

    方法三:
    利用<大眼睛>的原理,我把过程简化了一下,分三部分:
    一、
    在<form>与</form>之间插入<input type="hidden" name="__SCROLLPOS">,用以记录页面的当前滚动位置;
    二、
    给<body>起个名字,比如:<body id="theBody">,同时编写body的onscroll事件,总体如下:
    <body id="theBody" onload="bodyload()" onscroll="document.all["__SCROLLPOS"].value = theBody.scrollTop;">
    三、
    在Page_Load事件中加入如下代码(vb.net),作用在于ie显示该页面时,马上重新定位原来的滚动位置:
      Dim js As String
      js = "<script language=""javascript"">function bodyload() {"
    js &= "js &= "theBody.scrollTop = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "
    js &= "document.forms[0].__SCROLLPOS.value = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "
    js &= "}</script>"
      Response.Write(js)

    注:此文章转载至白衣轩

  • 相关阅读:
    使用日历控件的一些体会(downmoon)
    带附加条件的NewID()用法
    微软的招聘哲学——做微软人的五大核心素质(摘自《微软360度》)
    彻底禁用fckEditor的上传功能(含防止Type漏洞问题)
    Remote Access Connection Manager 服务因下列错误而停止解决办法
    GridView如何更新批量数据和单条记录?
    .net1.1与.net2.0在加载ascx文件的控件时有所不同(Downmoon)
    牛羊吃草问题求解(downmoon)
    c#操作ecxel的一些资源(downmoon搜集)
    安装sql2008 enterprise (English正式版)图解
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1903580.html
Copyright © 2020-2023  润新知