单击WEB控件引发页面刷新时定位页面?(智能导航的替代方式)

    

        在开发asp.net项目过程中,经常遇到页面智能导航的问题。在最开始使用asp.net提供的SmartNagivation,但是因为SmartNavigation是通过在网页中嵌入IFrame的方式实现的,经常会出问题,譬如FreeTextBox等编辑器失效。如在使用Frame的页面中使用会造成样式页失效,和校验控件一起使用时会有问题等等。从网上也搜集了很多资料,大部分都是通过javascript来保存网页当前视图位置的方式来实现的,使用起来经常还是会出现页面抖动。


代码如下:


    
#region "防止页面滚动"

    
protected void RetainScrollPosition()
    {
        StringBuilder saveScrollPosition 
= new StringBuilder();
        StringBuilder setScrollPosition 
= new StringBuilder();
        
this.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());

        }
    }

    
#endregion

 

在Page_load中调用该函数,另外,在aspx页面中将body的id起名为thebody , 设置页面的ViewState为true 。

 

 

posted @ 2008-08-11 22:19  LiveStar  阅读(404)  评论(0编辑  收藏  举报