0

我有一个包含 gridview 和 ModalPopupExtender (MPE) 的用户控件。我正在使用 MPE 使用服务器端 Show() 方法在来自 gridview 的某些 ItemCommands 之后强制用户做出决定。显示弹出窗口并获得回发或从弹出窗口执行的客户端脚本都可以很好地工作。

手头的问题是,当 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 回答