在开发asp.net项目过程中,经常遇到页面智能导航的问题。在最开始使用asp.net提供的SmartNagivation,但是因为SmartNavigation是通过在网页中嵌入IFrame的方式实现的,经常会出问题。如在使用Frame的页面中使用会造成样式页失效,和校验控件一起使用时会有问题等等。从网上也搜集了很多资料,大部分都是通过javascript来保存网页当前视图位置的方式来实现的,使用起来经常还是会出现页面抖动。
偶尔发现了微软的一个示例中的解决方法,代码如下:
 RetainScrollPosition()  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式Dim saveScrollPosition As New StringBuilder()  
asp.net网页智能导航SmartNavigation的替代实现方式
Dim setScrollPosition As New StringBuilder()  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式RegisterHiddenField(
"__SCROLLPOS""0")  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
"<script language='javascript'>")  
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
"function saveScrollPosition() {")  
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
" document.forms[0].__SCROLLPOS.value = thebody.scrollTop;")  
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
"}")  
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
"thebody.onscroll=saveScrollPosition;")  
asp.net网页智能导航SmartNavigation的替代实现方式saveScrollPosition.Append(
"</script>")  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式RegisterStartupScript(
"saveScroll", saveScrollPosition.ToString())  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式
If (Page.IsPostBack = TrueThen  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
"<script language='javascript'>")  
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
"function setScrollPosition() {")  
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
" thebody.scrollTop = " & Request("__SCROLLPOS"& ";")  
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
"}")  
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
"thebody.onload=setScrollPosition;")  
asp.net网页智能导航SmartNavigation的替代实现方式setScrollPosition.Append(
"</script>")  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式RegisterStartupScript(
"setScroll", setScrollPosition.ToString())  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式
End If  
asp.net网页智能导航SmartNavigation的替代实现方式
asp.net网页智能导航SmartNavigation的替代实现方式
End Sub  
asp.net网页智能导航SmartNavigation的替代实现方式
在Page_load中调用该函数,另外,在aspx页面中将body的id起名为thebody
大体上还是通过ViewState保存当前位置的方式来实现的,但是很好用。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-28
  • 2022-02-26
  • 2021-05-07
  • 2021-11-15
  • 2021-11-25
猜你喜欢
  • 2021-07-24
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案