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