Asp.net Page在加载后向下移动

时间:2012-08-23 20:34:07

标签: asp.net

我注意到在使用<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>

2 个答案:

答案 0 :(得分:2)

注意 此处描述的问题与MaintainScrollPositionOnPostback相关的 NOT 。我自己有这个问题,它与UpdatePanel控件有关。

http://weblogs.asp.net/andrewfrederick/archive/2008/03/04/maintain-scroll-position-after-asynchronous-postback.aspx

首先,在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