如何在postback
后返回同一页面位置?它总是跳转到页面顶部。
我尝试使用maintainScrollPositionOnPostBack = "true"
,但它没有起作用。
我最近也在寻找这个问题的解决方法。最终找到了如下解决方法,无需插入大量JavaScript代码:
在您的.aspx代码文件顶部插入以下内容:
MaintainScrollPositionOnPostback="true"
<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
对我来说,这个方法很有效,而且不需要添加任何其他代码来使用updatepanels来保持滚动条的位置。
我使用了几种方法来设置maintainScrollPositionOnPostBack。您尝试过多种方法吗?您能描述一下是什么触发了postback以及您测试了哪些浏览器吗?您是否使用了母版页(master page)?
Page.MaintainScrollPositionOnPostBack = true;
。<%@ Page MaintainScrollPositionOnPostback="true" %>
。<pages maintainScrollPositionOnPostBack="true" />
。您是否正在使用Google Chrome进行测试?我曾遇到过同样的问题,但在IE和Firefox中开始测试后就可以正常工作了。我认为Chrome不支持此属性。这可能也是.NET Framework 3.5的问题。它可能已经在.NET 4.0中修复了。
对我来说最好的解决方法是,使用更新面板包裹有问题的控件。
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<ContentTemplate>
dropdown controls that cause postback etc..
</ContentTemplate>
</asp:UpdatePanel>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
请确保在<form id="form1" runat="server" defaultbutton="YourDefaultButton">
中不要设置默认按钮。删除defaultbutton="YourDefaultButton"
,然后MaintainScrollPositionOnPostback="true"
就会起作用。
如果您想要移动到特定的锚点,您可以像这里所描述的那样进行操作。否则,您将需要使用JavaScript来找出距离页面顶部有多远,将其保存在隐藏字段或cookie中,并在页面加载后重置视图。
尽管bbbwex的回复是正确的,但我实际上花了一些时间才意识到我需要在以下两个位置都放置MaintainScrollPositionOnPostback="true":
ASPX页面的顶部。
在IsPostBack中
只有满足这两个条件后,它才能正常工作。
<script type="text/javascript">
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args) {
if ($get('<%=Panel1.ClientID%>') != null) {
xPos = $get('<%=Panel1.ClientID%>').scrollLeft;
yPos = $get('<%=Panel1.ClientID%>').scrollTop;
}
}
function EndRequestHandler(sender, args) {
if ($get('<%=Panel1.ClientID%>') != null) {
$get('<%=Panel1.ClientID%>').scrollLeft = xPos;
$get('<%=Panel1.ClientID%>').scrollTop = yPos;
}
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
将上述代码添加到ScriptManager
标记中,并在页面声明中添加MaintainScrollPositionOnPostback="true"
<%@ Page %>
指令中,对吧? - Richard Marskell - Drackir