2

<asp:panel>を使用した後、ページのレンダリングが終了した後、<asp:UpdatePanel>ページがジャンプ/スクロールダウンしていることに気付きました。また、非同期ポストバックの後、ページはそのままの場所にとどまるのではなく、同じ場所に移動します。ページのコード ビハインドにフォーカスが設定されていません。

おそらく、ページの読み込み時に .xml 内のいくつかの asp.net コントロールを更新していることに言及する価値があります<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から

まず、「scrollDiv」という名前の ContentTemplate のすぐ内側に 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 に答える