您的位置:首页 > 其它

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

2008-08-11 22:19 495 查看
在开发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 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: