asp.net通过Ajax UpdatePanel回传后滚动条位置变更解决方法
asp.net通过Ajax UpdatePanel回传后滚动条位置变更解决方法
发布时间:2016-12-29 来源:查字典编辑
摘要:主要方法是:用一个隐藏控件保存当前scorll值。回传回来后根据scroll的值在重新设置scroll。1、首先用onscroll事件保存s...

主要方法是:

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

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

复制代码 代码如下:

<div id="lv_content" 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" onscroll="SetScrollPosition(this)">

</div>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类