0

ページの下部までスクロールしているときに RadWindow を表示すると、ウィンドウがページの上部にレンダリングされ、ウィンドウを表示するには上にスクロールする必要があります。

「MaintainScrollPositionOnPostback」を設定して、ポスト バック スクロール位置を維持しています。

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs"

ItemTemplate にボタンがある RadListView があります。そのボタンがクリックされると、RadWindow モーダルを表示します。

問題は、ページの下部までスクロールしてボタンをクリックすると、ページの上部にウィンドウが表示されますが、ユーザーがスクロールした場所までスクロールダウンすることです (MaintainScrollPositionOnPostback のため)。したがって、ユーザーが上にスクロールするまで、ウィンドウは画面外に表示されます

ポストバック時にユーザーがスクロールしている RadWindow を表示するにはどうすればよいですか? (ページの上部にはありません)

RadWindow を 2 つの異なる方法で表示しようとしましたが、どちらも同じ結果になりました

方法 1:

Window.VisibleOnPageLoad = true;

方法 2:

string script = "function f(){$find(\"" + RadWindow1.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);
4

1 に答える 1

1

show()RadWindow を開く前にスクロールが行われるように、タイムアウトを追加します。それ以外の場合は、次のようになります。

  1. ポストバックが返され、ページがスクロールされない

  2. RadWindow が表示され、現在のビューポートの中央に表示されます

  3. スクロールがシフトするため、RadWindow が期待どおりの場所に表示されない

次に例を示します。

string script = "function f(){setTimeout(function(){$find(\"" + RadWindow1.ClientID + "\").show(); },111);Sys.Application.remove_load(f);}Sys.Application.add_load(f);";

ここで、説明のために追加した 111 ミリ秒のタイムアウトを微調整できます。引数として 0 を使用しても十分です。正直、スクロールがずれるのにどれくらい時間がかかるかわかりません。

ちなみに、コードを読みやすくするために、RadWIndow の ID を引数として取り、代わりにそれを呼び出す JS 関数をマークアップに作成します。

于 2016-06-14T12:44:57.993 に答える