asp.net網頁智能導航SmartNavigation的替代實現方式

來源:互聯網
上載者:User

http://czm600604604.blog.163.com/blog/static/825206820094215237512/

 

asp.net網頁智能導航SmartNavigation的替代實現方式

在開發asp.net項目過程中,經常遇到頁面智能導航的問題。在最開始使用asp.net提供的SmartNagivation,但是因為SmartNavigation是通過在網頁中嵌入IFrame的方式實現的,經常會出問題。如在使用Frame的頁面中使用會造成樣式頁失效,和校正控制項一起使用時會有問題等等。從網上也搜集了很多資料,大部分都是通過javascript來儲存網頁當前視圖位置的方式來實現的,使用起來經常還是會出現頁面抖動。

偶爾發現了微軟的一個樣本中的解決方案,代碼如下:

Private Sub RetainScrollPosition()Sub RetainScrollPosition()  

Dim saveScrollPosition As New StringBuilder()  

Dim setScrollPosition As 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 = True) Then  

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

End If  

End Sub  

在Page_load中調用該函數,另外,在aspx頁面中將body的id起名為thebody

大體上還是通過ViewState儲存當前位置的方式來實現的,但是很好用。

posted on 2005-03-29 13:56 doudou 閱讀(810) 評論(2)  編輯 收藏 網摘 所屬分類: dribs and drabs

#1樓 回複  引用    #2樓 doudou      

用C#也沒有問題啊,這是我使用的方式

/// <summary>

/// page smart navigation function

/// ensure the body.id=thebody;

/// </summary>

/// <remarks>使用此函數時,一定要將body加上樹型id="thebody",否則會出現javascript錯誤。</remarks>

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()) ;

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.