2

我注意到在使用<asp:panel><asp:UpdatePanel>页面完成渲染后我的页面正在跳转/向下滚动。同样在异步回发之后,页面会移动到同一个地方,而不是停留在原来的位置。我的页面后面的代码中没有设置任何焦点。

可能值得一提的是,在页面加载时,我正在更新<asp:UpdatePanel>. 主要是数据库驱动的下拉菜单。

我想知道是否有人知道页面会跳下的任何原因。某些asp.net控件是否有一些默认焦点或发生了什么?

在此先感谢您的帮助,

我尝试过的事情:

异步回发后如何保持整个页面滚动位置

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>
4

2 回答 2

2

注意此处描述的问题与MaintainScrollPositionOnPostback无关。我自己也遇到过这个问题,它与 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>
于 2012-08-23T20:39:07.253 回答
0

也许您正在使用MaintainScrollPositionOnPostBack

于 2012-08-23T20:38:15.373 回答