0

ListBoxを に埋め込みたいUpdatePanel。アイテムのListBox選択時にポストバックがトリガーされ、複数選択が有効になっている必要があります。私の問題は、ポストバックのスクロール バーです。項目をクリックするたびにトップに戻ります。スクロール位置をバックアップするためにさまざまな方法を試しましたが、常に何か問題があります(少なくともIE8では、私が注目しなければならないブラウザです)。ちらつきが発生するか、ポストバック後にユーザーがマウスホイールを使用するとすぐに、スクロールバーが一番上に戻ります。これは、Chrome と Mozilla では発生しません。

私は考えていましたが、何かうまくいくはずです-ListBox含む UpdatePanel を再描画/更新せずにポストバックしますか? これは可能ですか?

4

3 に答える 3

1

完全なポストバックは必然的にリストビューを再描画するため、リストビューのスクロール位置を維持することは問題になります

スマートナビ

苦労しているページスクロール位置の位置である場合は、スマートナビゲーションを試すことができます

http://msdn.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx

これについては、ブラウザーのカバレッジが非常に信頼できるとは思いません (たとえば、http://forums.asp.net/p/1094179/1651390.aspxを参照してください) 。

パネルとポストバック コントロールを更新する

更新パネルでコンテンツを更新するだけの場合は、ページの位置が失われることはありません。完全ではなく、部分的なポストバックを行っていることを確認してください。ポストバックをトリガーするリストボックスとコントロールは、両方とも更新パネル内にある必要があります。

ただし、これには注意点があります。更新パネルの外にボタンがある場合、パネルのトリガー コレクションにある場合、部分的なポストバックがトリガーされる可能性があります ( http://msdn.microsoft.com/en-us/library/ system.web.ui.updatepanel.triggers.aspx )

JQuery AJAX

核となる選択肢は、JQuery AJAX などを使用することです。たとえば、適切な AJAX を、更新パネルが使用する奇妙な偽の中途半端なものではありません (あまり役に立たないとは言いませんが、慎重に使用する必要があります)。JQuery AJAX は、ポストバック アーキテクチャ内で動作する豚なので、必ずしもお勧めしません。

ListBox のスクロール位置の維持

注-リストボックスのスクロール位置が気になる場合は、この質問

ページではなく、更新パネルのリストボックスのスクロール位置を維持する

良いアドバイスをくれる

于 2013-06-10T09:50:50.493 に答える
0

アイテムを選択するたびにポストバックする必要があるのはなぜですか? あなたは非同期ポストバックを意味しませんか?ユーザーコントロール内のListBoxで同様の問題があり、誰がUpdatePanelにいましたか。jQuery を使用して、リストボックス内のすべての項目を選択および選択解除する 2 つのボタンのクリック イベントを処理しました。

これを試して:

.js ファイル (select.js など) を作成し、そこに jQuery コードを挿入します。何かのようなもの:

function pageLoad() {

    //insert code here
}

(document).ready の代わりに pageLoad() を使用することが重要です。

次に、ScriptManager にスクリプト参照を挿入します。

<asp:ScriptManager ID="sm" runat="server" EnablePartialRendering="True">
    <Scripts>
        <asp:ScriptReference Path="~/Scripts/Select.js" />
    </Scripts>
</asp:ScriptManager>
于 2013-06-14T18:55:40.887 に答える
0

ちらつきは、何をしても常に発生する可能性があると思います (ちらつきは、実際には、コンテンツをいくつかの段階でレンダリングするブラウザーです)。

MaintainScrollPositionOnPostBack ページのプロパティを試すことから始めてください。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx

于 2013-06-10T09:45:31.480 に答える