【问题标题】:ModalPopUpExtender shown from server-side: Controlling focus从服务器端显示的 ModalPopUpExtender:控制焦点
【发布时间】:2009-07-31 20:29:01
【问题描述】:

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

目前的问题是,当 MPE 显示时,我无法控制焦点所在的位置。焦点似乎落在弹出窗口内,但没有落在任何特定控件上。单个选项卡将焦点移动到预期的控件,但我不能直接强制焦点在那里。

据我所知,节目和放映事件永远不会在客户端触发。

我尝试在页面、用户控件、MPE、弹出面板和按钮的 preRender 事件中使用 Focus() 和 SetFocus()。没有产生正确的结果。事实上,在这些事件中或其他任何地方调用焦点,往往会导致焦点落在弹出窗口之外,因此没有多少选项卡会将焦点返回到它所属的位置。

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

【问题讨论】:

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


    【解决方案1】:

    前段时间我也遇到过这个问题,在摸索之后,我只是注册了一个简单的 javascript 以在回发后运行以将焦点发送到所需的控件。

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

    【讨论】:

    • 这对我来说无法正常工作,直到我用setTimeout(function(){...},1);包围它
    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 2015-03-24
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多