首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止回发后的页面滚动并保持位置

防止回发后的页面滚动并保持位置
EN

Stack Overflow用户
提问于 2012-04-13 11:44:53
回答 8查看 45.3K关注 0票数 15

我的工作与添加用户的分数基于他们的检查在一个CheckBoxList。每次用户选中一个框时,就会将一个值X添加到总分数中。当用户取消选中某个框时,将从总得分中减去一个值X。这里没有问题。

我遇到的问题是,在CheckBoxList属性中使用AutoPostback选项会强制页面加载回到顶部,而不是停留在用户所在的位置,这意味着他们必须在每次选中/取消选中后继续向下滚动。有没有办法防止这种情况发生?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-04-13 11:58:02

Ajax解决方案

当然,最好的方法是使用Ajax调用。页面根本不会移动,而只是更新数据。updatepanel是一个快速而简单的启动解决方案-不是一个最佳的解决方案,但如果你有一个简单的页面,它是一个非常好的解决方案。

第二种解决方案

第二种解决方案是使用锚点#。您可以设置您希望它显示的点:

代码语言:javascript
运行
复制
<a name="PointA"></a>

然后使用该锚点作为page.aspx#PointA调用页面。

第三种解决方案

第三种解决方案是在页面声明(顶部第一行)上使用ASP.NET的内部JavaScript代码<%@ Page MaintainScrollPositionOnPostback="true" %>

或在web.config上影响所有页面,<pages maintainScrollPositionOnPostBack="true" />

或者以编程方式System.Web.UI.Page.MaintainScrollPositionOnPostBack = true;来按需打开和关闭它。

使用jQuery

只需两行jQuery代码,您就可以在回帖后在您想要移动的点上制作一个不错的动画:

代码语言:javascript
运行
复制
var WhereToMove = jQuery("#PointA").position().top;
jQuery("html,body").animate({scrollTop: WhereToMove }, 1000);

然后将页面移动到此元素:

代码语言:javascript
运行
复制
<a id="PointA" name="PointA"></a>

谷歌搜索

最后,您可以使用定制的JavaScript代码来做同样的事情。互联网上有很多这样的例子:https://www.google.com/?q=asp.net+remain+position

票数 43
EN

Stack Overflow用户

发布于 2016-11-09 08:21:58

防止回发后页面滚动的两个最好的方法是:把这个放在web.config中。

1) pages maintainScrollPositionOnPostBack="true“

许多人质疑,这条线到底放在哪里。所以这条线的确切位置是

代码语言:javascript
运行
复制
<system.web>
<pages maintainScrollPositionOnPostBack="true">
</system.web>

注意:这将适用于整个解决方案,它可以防止每个窗体滚动

2)实现这一点的第二种方法是将此行放在aspx文件的顶部

MaintainScrollPositionOnPostback=true

像这样

代码语言:javascript
运行
复制
<%@ Page MaintainScrollPositionOnPostback=true Language="C#" AutoEventWireup="true" CodeBehind="xx.aspx.cs" Inherits="xx.Global" %>

注意:这将应用于您要阻止的特定表单。

票数 7
EN

Stack Overflow用户

发布于 2013-09-29 13:28:56

我可以想到三种可能的方法:

在应禁用滚动的页面上,将attribute MaintainScrollPositionOnPostback in Page ("<%@ Page ....>")指令设置为true,即<%@ Page MaintainScrollPositionOnPostback=true ...other settings... >应出现在aspx页面的顶部

  • 对于网站中的所有页面,请在web.config中添加以下行:<pages MaintainScrollPositionOnPostback=true>

  • Incorporate AJAX Queries
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10134963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档