4

自動ポストバックがオンのときにアイテムを選択すると、asp.netリストボックスが常に一番上にスクロールするのはなぜですか? どうすればこれを防ぐことができますか?

4

4 に答える 4

4

この問題を修正するために、javascriptに次のjqueryを追加しました。どこで解決策を見つけたか思い出せませんが、ここにあります。ターゲットコントロールの場所を追加するだけです-$get('YourDiv_YourPanel')。

<script type="text/javascript">
    //Maintain scroll position in given element or control
    var xInputPanel, yInputPanel;
    var xProductPanel, yProductPanel;
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        yInputPanel = $get('MainContent_InputPanel').scrollTop;
        yProductPanel = $get('MainContent_ProductPanel').scrollTop;
    }
    function EndRequestHandler(sender, args) {
        $get('MainContent_InputPanel').scrollTop = yInputPanel;
        $get('MainContent_ProductPanel').scrollTop = yProductPanel;
    }
</script>
于 2012-10-25T13:33:16.453 に答える
3

私は同じ問題を抱えていましたが、更新パネルでそれを行う方法を見つけました。ポストバックでリストボックスが更新されたためだと思うので、更新パネルが更新されないようにするのに役立ちます。リストボックスが条件付き更新パネル内にあり、子がトリガーとして「false」に設定されていることを確認します。

 <asp:UpdatePanel runat="server" ID="updtpnlSearchResults" UpdateMode="Conditional" ChildrenAsTriggers="false">

リストボックスの選択が独自の更新パネル内で変更されたときに、変更する必要があるものをすべて配置します。そうすれば、リストボックスは更新されません。

于 2013-09-18T20:44:43.657 に答える
0

このページディレクティブが必要です:

<%@ Page MaintainScrollPositionOnPostback="true" ... %>
于 2011-09-01T18:29:58.563 に答える
-3

いくつかのオプションがあります。ページ ディレクティブで MaintainScrollPositionOnPostBack を true に設定するか、リストボックスを更新パネルに配置して AJAX を使用してスクロール位置を維持することができます。

ページ ディレクティブ オプション:

<pages maintainScrollPositionOnPostBack="true" />

更新パネル オプション:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ListBox ID="ListBox1" runat="server" ...>
    </ContentTemplate>
</asp:UpdatePanel>
于 2011-09-01T18:39:08.527 に答える