我注意到在使用<asp:panel>
或<asp:UpdatePanel>
后,我的页面在页面完成渲染后跳跃/向下滚动。在异步回发之后,页面也会移动到同一个位置而不是保持在原位。我的页面后面的代码中没有任何焦点设置。
值得一提的是,在页面加载时,我正在更新<asp:UpdatePanel>
中的一些asp.net控件。主要是数据库驱动的下拉菜单。
我想知道是否有人知道为什么页面会跳下来。是否存在某些默认焦点或某些asp.net控件发生的事情?
先谢谢你的帮助,
我尝试过的事情:
How to keep whole page scroll position after asynchronous postback
UPDATE1: 我使用 David Stratton 脚本来获得正确的位置。然而,页面仍然跳跃然后跳回到正确的位置。我的目标是让页面根本不跳。
这是我页面的标记,这些之间有控制权。
<asp:UpdatePanel ID="UpdatePanel9" runat="server">
<asp:Panel ID="tagpanel" runat="server" DefaultButton="btnAddTag">
</asp:Panel>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel5" runat="server">
<asp:Panel ID="pnlIncidentInfo" runat="server">
</asp:Panel>
</asp:UpdatePanel>
答案 0 :(得分:2)
注意 此处描述的问题与MaintainScrollPositionOnPostback相关的 NOT 。我自己有这个问题,它与UpdatePanel控件有关。
首先,在ContentTemplate内部设置一个名为“scrollDiv”的div。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="scrollDiv">
The rest of your page content goes here.
</div>
</ContentTemplate>
<asp:UpdatePanel>
然后,正如文章所说,JavaScript追踪页面上的ScriptManager
<script type="text/javascript">
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
xPos = $get('scrollDiv').scrollLeft;
yPos = $get('scrollDiv').scrollTop;
}
function EndRequestHandler(sender, args) {
$get('scrollDiv').scrollLeft = xPos;
$get('scrollDiv').scrollTop = yPos;
}
</script>
答案 1 :(得分:0)
也许您正在使用MaintainScrollPositionOnPostBack?