首页  ·  知识 ·  云计算
AjaxUpdatePanel回传后滚动条位置变更解决方法
网友  博客园   综合  编辑:dezai   图片来源:网络
主要方法是: 用一个隐藏控件保存当前scorll值。回传回来后根据scroll的值在重新设置scroll。 /
主要方法是:

用一个隐藏控件保存当前scorll值。回传回来后根据scroll的值在重新设置scroll。
 

1、首先用onscroll事件保存scorll值,并用HiddenField记录scroll值

<div id="lv_content" class="unify_content" style="padding-left: 0; height: 455px;" onscroll="SetScrollPosition(this)">
</div>
<asp:HiddenField ID="HiddenFieldScroll" runat="server" />


 

代码
//2、编写onscroll事件,主要用于保存当前控件的scroll值
function funSaveScroll(sender) {
//得到隐藏控件
var vScroll = $get('ctl00_ContentPlaceHolder1_hfLvScroll');
if (vScroll != null) {
//设置隐藏控件的值为scorll值
vScroll.value = sender.scrollTop;
}
}


 

代码
//3、在页面的加载完成事件中处理scorll值
var prm = Sys.WebForms.PageRequestManager.getInstance();
//设置加载完成事件
prm.add_pageLoaded(pageLoaded);

//加载完成重新设置控件的scroll值
function pageLoaded(sender, args) {
//得到要设置scroll值的控件
var vDiv = $get("lv_content");
if (vDiv != null) {
//得到隐藏控件
var vScrollValue = $get("ctl00_ContentPlaceHolder1_hfLvScroll");
//设置控件的scroll值
vDiv.scrollTop = vScrollValue.value;
}
}

通过以上代码就可以解决回传回来后scroll变动的问题。
 

 

如果使用了Master页面,可以将上边的代码放在master页面中,进行公用。

1)先在Master页面中加入HiddenField。

<asp:HiddenField ID="HiddenFieldScroll" runat="server" />


 

代码
/*
2)在master页面中编写onscroll事件,记录其它页面中控件的scroll值
使用方法:只要在要设置控件中设置其ID并加入onscroll事件即可。即加入 onscroll="SetScrollPosition(this)"语句
*/
function SetScrollPosition(sender) {
var scrollTemp = $get("ctl00_HiddenFieldScroll");
if (scrollTemp != null) {
//将要设置控件的ID和scroll值一起保存。中"|"分隔
scrollTemp.value = sender.id + "|" + sender.scrollTop;
}
}


 

 

代码
//3)在页面的加载完成事件中处理scorll值
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoaded);
//The Pageloaded for scroll orientation
function onPageLoaded(sender, args) {
var scrollTemp = $get("ctl00_HiddenFieldScroll");
if (scrollTemp != null) {
var scorllValue = scrollTemp.value;
if (scorllValue.length > 0) {
var target = scorllValue.split("|");
if (target.length > 1) {
var targetControlID = target[0];
var targetValue = target[1];
var targetControl = $get(targetControlID);
//得到要设置控件
if (targetControl == null || targetValue.length < 1) {
return;
}
//设置控件的scroll值
targetControl.scrollTop = targetValue;
}
}
}
}

 

<%--4)调用时,其它页面控件中加onscroll="SetScrollPosition(this)" 并设置ID即可--%>
<div id="lv_content" class="unify_content" style="padding-left: 0; height: 455px;" onscroll="SetScrollPosition(this)">
</div>
本文作者:网友 来源:博客园
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读