ModalPopUpExtender, показанный со стороны сервера: управление фокусом - PullRequest
0 голосов
/ 01 августа 2009

У меня есть пользовательский элемент управления, который содержит сетку и ModalPopupExtender (MPE). Я использую MPE для принудительного принятия пользовательских решений после определенных ItemCommands из вида сетки с использованием метода Show () на стороне сервера. Отображение всплывающего окна и получение из него всплывающих окон или клиентских сценариев для работы прекрасно работают.

Проблема в том, что я не могу контролировать, куда попадает фокус, когда показывает MPE. Фокус, кажется, попадает в всплывающее окно, но не на какой-то конкретный контроль. Одна вкладка перемещает фокус на нужный элемент управления, но я не могу принудительно сфокусироваться там.

Насколько я могу судить, показ и показ событий никогда не запускаются на стороне клиента.

Я пытался использовать Focus () и SetFocus () в событиях preRender для страницы, пользовательского элемента управления, MPE, всплывающей панели и кнопки. Ни один из них не дает должного результата. Фактически, вызов фокуса на кнопке в этих событиях или где-либо еще в этом отношении, как правило, приводит к приземлению фокуса за пределы всплывающего окна, так что никакое количество вкладок не вернет фокус туда, где он находится.

Кому-нибудь повезло, если вы управляете фокусом в подобной ситуации?

1 Ответ

4 голосов
/ 01 августа 2009

Я тоже столкнулся с этим некоторое время назад, и, поигравшись с ним, я просто закончил тем, что зарегистрировал простой javascript для запуска после обратной передачи, чтобы направить фокус на нужный элемент управления.

ScriptManager.RegisterStartupScript(
    typeof(MyPage), 
    "FocusScript", 
    "document.getElementById('" + TextBoxInMPE.ClientID.ToString() + "').focus()", 
    true);
...