自動ポストバックがオンのときにアイテムを選択すると、asp.netリストボックスが常に一番上にスクロールするのはなぜですか? どうすればこれを防ぐことができますか?
質問する
5228 次
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 に答える