0

gridview と ModalPopupExtender (MPE) を含むユーザー コントロールがあります。サーバー側の Show() メソッドを使用して、グリッドビューから特定の ItemCommands の後にユーザーの決定を強制するために、MPE を使用しています。ポップアップの表示と、ポップアップから実行するポストバックまたはクライアント側スクリプトの取得の両方がうまく機能します。

当面の問題は、MPE が表示されたときにフォーカスがどこに到達するかを制御できないことです。フォーカスはポップアップ内にあるように見えますが、特定のコントロールにはありません。単一のタブで目的のコントロールにフォーカスが移動しますが、そこに直接フォーカスを強制することはできません。

私が知る限り、ショーと表示イベントはクライアント側では発生しません。

ページ、ユーザー コントロール、MPE、ポップアップ パネル、ボタンの preRender イベントで Focus() と SetFocus() を使用してみました。適切な結果が得られるものはありません。実際、これらのイベントで、またはその他の場所でボタンにフォーカスを呼び出すと、ポップアップの外にフォーカスが移動する傾向があるため、タブが属する場所にフォーカスが戻ることはありません。

同様の状況でフォーカスを制御できた人はいますか?

4

1 に答える 1

4

しばらく前にこれに遭遇し、それをいじった後、ポストバック後に実行する単純なjavascriptを登録して、目的のコントロールにフォーカスを送信することになりました。

ScriptManager.RegisterStartupScript(
    typeof(MyPage), 
    "FocusScript", 
    "document.getElementById('" + TextBoxInMPE.ClientID.ToString() + "').focus()", 
    true);
于 2009-07-31T20:52:07.857 に答える