我的工作与添加用户的分数基于他们的检查在一个CheckBoxList。每次用户选中一个框时,就会将一个值X
添加到总分数中。当用户取消选中某个框时,将从总得分中减去一个值X
。这里没有问题。
我遇到的问题是,在CheckBoxList属性中使用AutoPostback选项会强制页面加载回到顶部,而不是停留在用户所在的位置,这意味着他们必须在每次选中/取消选中后继续向下滚动。有没有办法防止这种情况发生?
发布于 2012-04-13 03:58:02
Ajax解决方案
当然,最好的方法是使用Ajax调用。页面根本不会移动,而只是更新数据。updatepanel是一个快速而简单的启动解决方案-不是一个最佳的解决方案,但如果你有一个简单的页面,它是一个非常好的解决方案。
第二种解决方案
第二种解决方案是使用锚点#。您可以设置您希望它显示的点:
<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代码,您就可以在回帖后在您想要移动的点上制作一个不错的动画:
var WhereToMove = jQuery("#PointA").position().top;
jQuery("html,body").animate({scrollTop: WhereToMove }, 1000);
然后将页面移动到此元素:
<a id="PointA" name="PointA"></a>
谷歌搜索
最后,您可以使用定制的JavaScript代码来做同样的事情。互联网上有很多这样的例子:https://www.google.com/?q=asp.net+remain+position
发布于 2016-11-09 00:21:58
防止回发后页面滚动的两个最好的方法是:把这个放在web.config中。
1) pages maintainScrollPositionOnPostBack="true“
许多人质疑,这条线到底放在哪里。所以这条线的确切位置是
<system.web>
<pages maintainScrollPositionOnPostBack="true">
</system.web>
注意:这将适用于整个解决方案,它可以防止每个窗体滚动
2)实现这一点的第二种方法是将此行放在aspx文件的顶部
MaintainScrollPositionOnPostback=true
像这样
<%@ Page MaintainScrollPositionOnPostback=true Language="C#" AutoEventWireup="true" CodeBehind="xx.aspx.cs" Inherits="xx.Global" %>
注意:这将应用于您要阻止的特定表单。
发布于 2013-09-29 05:28:56
我可以想到三种可能的方法:
在应禁用滚动的页面上,将attribute MaintainScrollPositionOnPostback
in Page ("<%@ Page ....>")指令设置为true,即<%@ Page MaintainScrollPositionOnPostback=true ...other settings... >
应出现在aspx页面的顶部
<pages MaintainScrollPositionOnPostback=true>
https://stackoverflow.com/questions/10134963
复制