服务器端显示的ModalPopUpExtender:控制焦点

时间:2009-07-31 20:29:01

标签: asp.net focus ajaxcontroltoolkit modalpopupextender server-side

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

手头的问题是,当MPE显示时,我无法控制焦点落在何处。焦点似乎落在弹出窗口内,但不在任何特定控件上。单个选项卡将焦点移动到预期的控件,但我无法直接强制对焦。

据我所知,节目和节目事件从未在客户端发生过。

我在页面,用户控件,MPE,弹出式面板和按钮的preRender事件中尝试使用Focus()和SetFocus()。没有产生正确的结果。实际上,在这些事件中或其他任何地方调用焦点,往往会导致焦点在弹出窗口之外着陆,这样任何数量的标签都不会聚焦到它所属的位置。

在类似的情况下,任何人都有运气控制焦点吗?

1 个答案:

答案 0 :(得分:4)

我跑了这么一段时间回来并且在拥抱它之后,我刚刚注册了一个简单的javascript,在回发后运行以将焦点发送到所需的控件。

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