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