当你使用你要去的UpdatePanel需要挂接到ASP.NET AJAX PageRequestManager
你需要一个方法添加到endRequest事件挂钩是:
完成异步回发并将控件返回给浏览器后引发。
所以你会碰到这样的:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(pageLoaded);
function pageLoaded(sender, args) {
window.scrollTo(0,0);
}
</script>
这将迫使浏览器回到页面顶部一次的更新请求已完成滚动。
有,你可以挂接到其他事件,而不是过程:
beginRequest // Raised before the request is sent
initializeRequest // Raised as the request is initialised (good for cancelling)
pageLoaded // Raised once the request has returned, and content is loaded
pageLoading // Raised once the request has returned, and before content is loaded
异步后背上的优点是,页面将保持滚动高度,您无需设置MaintainScrollPosition,因为没有“全页面重新加载”发生,在这种情况下,您实际上希望发生该效果,因此您需要手动创建它。
编辑响应更新问题
好了,如果你只需要重置某些按钮按下了现在的位置是你需要做这样的事情:通过挂钩
开始入的BeginRequest不是/以及:
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
这是因为在args参数您可以访问:
args.get_postBackElement().id
它会告诉你,启动了整个事件的按钮的ID - 然后,您可以在这里检查值,和移动页面,或将其存储在一个变量,并且在最后的请求查询它 - 了解比赛条件等,用户在原始更新完成之前点击另一个按钮。
这应该让你运气好的话会 - 有解决这个上Working with PageRequestManager Events
我只想用ASP.NET GridView的这个特定事件返回到页面顶部。我在同一页面上有一堆其他按钮,我想保持滚动位置。 – 2009-03-05 19:53:45