Javascript 从更新面板异步回发后保持滚动位置

Javascript 从更新面板异步回发后保持滚动位置,javascript,.net,asp.net,ajax,updatepanel,Javascript,.net,Asp.net,Ajax,Updatepanel,我在使用asp.net和更新面板时遇到一些问题。问题是,每次从“更新”面板发生部分回发时,页面都会卷回顶部。在我的大多数页面上,这并不是一个大问题,但在某些页面上可能会变得相当长。然后,当用户位于页面底部时,我显示jQuery弹出窗口,其中包含RadListView,用户可以选择该列表中的元素。但单击此元素会导致部分回发,页面会跳回顶部 我在网上查过,找不到任何解决问题的办法。当然,设置MaintainScrollPositionOnPostback不会起任何作用 有人知道什么能帮我解决这个问题

我在使用asp.net和更新面板时遇到一些问题。问题是,每次从“更新”面板发生部分回发时,页面都会卷回顶部。在我的大多数页面上,这并不是一个大问题,但在某些页面上可能会变得相当长。然后,当用户位于页面底部时,我显示jQuery弹出窗口,其中包含
RadListView
,用户可以选择该列表中的元素。但单击此元素会导致部分回发,页面会跳回顶部

我在网上查过,找不到任何解决问题的办法。当然,设置
MaintainScrollPositionOnPostback
不会起任何作用

有人知道什么能帮我解决这个问题吗

干杯,
Pako

使用中继器中某个控件的ID,并在回发完成后使用JQuery滚动


您可以根据控件生成的格式获取某些控件的ID。

对此有一些解决方法,我很久以前就在ERP中使用过。不确定这是否是最好的解决方案,但它确实有效

我不知道您是使用自定义页面类还是默认的
System.Web.UI.Page
类,但是,我将尝试向您解释如何实现它,然后您将找到在您的环境中实现它的最佳方法,好吗

例如,您将创建一个ID为“hfScrollPosition”的
HiddenField

然后,您将创建一个javascript事件:
document.onscroll
或类似的事件,并在事件中更新隐藏字段以获取当前滚动位置。例如:
document.getElementById(“hfScrollPosition”).value=document.documentElement.scrollTop

这样做,您将有一个ASP.NET控件根据主体滚动位置自动更新其值。因此,当页面中的某个控件进行回发时,可以将以下javascript代码放入页面加载事件中:

document.documentElement.scrollTop=document.getElementById(“hfScrollPosition”).value

因此,每当您的页面收到回发时,正文滚动位置都会正确更新


编辑:我做了一把小提琴来模拟它:

重复:…或