Adamancy---2005  
天行健,君子以自强不息。地势坤,君子以厚德载物。
日历
<2004年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234
统计
  • 随笔 - 17
  • 文章 - 0
  • 评论 - 104
  • 引用 - 0

导航

与我联系

搜索

 

常用链接

留言簿(1)

随笔分类

随笔档案

相册

收藏夹

中文Blog

最新评论

阅读排行榜

评论排行榜

 

一、
  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 = MyBody.scrollTop;");
   saveScrollPosition.Append("}");
   saveScrollPosition.Append("MyBody.onscroll=saveScrollPosition;");
   saveScrollPosition.Append("</script>");

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

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

    RegisterStartupScript("setScroll", setScrollPosition.ToString());
   }
  }

page_load 时,执行RetainScrollPosition()
页面html中,body加id=MyBody,即可这样一次添加,只要继承的页面都会实现你想要的了
(引用别人的,原作者我忘了,在此感谢)

二、

在你需要的位置添加一个对象控件,让页面刷新后定位到此控件的位置,使用了scrollIntoView方法。

 public void ScrollToObject(string str_Ctl_Name,Page page)
{
    if(!page.IsStartupScriptRegistered ("ScrollObject"))
   {
         page.RegisterStartupScript("msgScrollObject"," <script>document.forms(0)."+str_Ctl_Name+".scrollIntoView();document.forms(0)."+str_Ctl_Name+".focus(); </script>");
  }
}

注:ScrollToObject:方法名
        str_Ctl_Name:控件名
        例子:ScrollToObject(Button1,Page);

(来自 “阿好空间” http://blog.csdn.net/hbzxf

posted on 2004-08-15 21:45 向.net进军 阅读(945) 评论(1)  编辑 收藏 网摘 所属分类: asp.net
评论:
  • #1楼   阿浪       Posted @ 2005-05-10 09:55
    一、
    在<form>与</form>之间插入<input type="hidden" name="__SCROLLPOS">,用以记录页面的当前滚动位置;
    二、
    给<body>起个名字,比如:<body id="theBody">,同时编写body的onscroll事件,总体如下:
    <body id="theBody" onscroll="document.all["__SCROLLPOS"].value = theBody.scrollTop;">
    三、
    在Page_Load事件中加入如下代码(vb.net),作用在于ie显示该页面时,马上重新定位原来的滚动位置:
    Dim js As String
    js = "<script language=""javascript"">"
    js &= "theBody.scrollTop = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "
    js &= "document.all["__SCROLLPOS"].value = " & CInt("0" & Request.Form("__SCROLLPOS")) & "; "
    js &= "</script>"
    Response.Write(js)
    ------------------------------------------------------------------------
    大功告成!


    为了避免页面首次运行时出现的脚本错误:找不到theBody,应该改成以下方式:
    二、
    <body>增加 onload="bodyload()"
    三、
    Page_Load里改成:

    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>"   回复  引用  查看    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接:
 

 
Copyright © 向.net进军 Powered by: 博客园 模板提供:沪江博客