2012-08-23 56 views
2

我注意到在使用<asp:panel><asp:UpdatePanel>後,我的頁面在頁面完成渲染後跳轉/向下滾動。在異步回傳之後,頁面移動到相同的位置,而不是停留在原來的位置。我的頁面後面的代碼沒有任何焦點。加載後Asp.net頁面向下移動

可能值得一提的是,在頁面加載時,我正在更新<asp:UpdatePanel>內的一些asp.net控件。主要是數據庫驅動的下拉菜單。

我想知道是否有人知道爲什麼頁面會跳下來的任何原因。是否有一些默認焦點或某些asp.net控件發生了什麼?

預先感謝您的幫助,

事情我已經嘗試:

How to keep whole page scroll position after asynchronous postback

UPDATE1: 我用大衛·斯特拉頓腳本,以獲得正確的位置。但是頁面仍然跳下來然後跳回到正確的位置。我的目標是讓頁面不會跳躍。

這是我的頁面的標記,它們之間有控制。

<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

注意這裏所描述的問題是相關MaintainScrollPositionOnPostback。我自己有這個問題,它與UpdatePanel控件有關。

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

首先,建立一個div只是名爲 「scrollDiv」 中的ContentTemplate內。

<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> 
+0

啊!我認爲這是訣竅!刪除關於MaintainScrollPositionOnPostback的答案。 – Shyju

+0

我已經嘗試過我的ScriptManager上面的JavaScript,但頁面顯示正確的位置時,它的加載。當它完成時,它看起來像頁面中間。 –

+0

@DavidStratton:啊!我的一個評論浪費了! :) – Shyju