AjaxToolkit ModalPopupExtender: Как мне установить фокус на элемент управления во всплывающей панели? - PullRequest
4 голосов
/ 07 января 2010

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

Когда отображается модальное поле, я бы хотел, чтобы курсор был помещен в текстовое поле txtFirst.

Как мне это сделать? Раньше у меня были проблемы с командами registerscript, поэтому, если они нужны, я надеюсь, что синтаксис, если вы его предоставите, будет правильным.

Спасибо

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MyModalSimple.aspx.vb" Inherits="MyModalSimple" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script type="text/javascript">

        function onOk() {            
            form1.submit();
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <cc1:modalpopupextender id="Button1_ModalPopupExtender" runat="server" targetcontrolid="Button1"
            popupcontrolid="pnlModal" okcontrolid="btnOK" cancelcontrolid="btnCancel"   DropShadow="true"  OnOkScript="onOk();">

        </cc1:modalpopupextender>

        <asp:Panel ID="pnlModal" runat="server" Style="display: None1" 
            BackColor="#CCCCCC">
            <br />
            <table>
                <tr>
                    <td>
                        <asp:Label ID="lblFirst" runat="server" Text="First"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblLast" runat="server" Text="Last"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtLast" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;
                    </td>
                    <td align="right">
                        <asp:Button ID="btnOK" runat="server" Text="OK" />
                        <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
                    </td>
                </tr>
            </table>
            <br />
            <br />
        </asp:Panel>

    </div>
    </form>
</body>
</html>

Кроме того, как я могу изменить приведенный выше код, чтобы модальное диалоговое окно отображалось в результате выбора элемента раскрывающегося списка? Если я установлю targetcontrolid = "DropDownList1", диалоговое окно отображается, когда оно выпадает, а не когда выбор сделан

Ответы [ 3 ]

2 голосов
/ 07 января 2010

Пример можно найти здесь . По сути, вы используете JavaScript.

1 голос
/ 24 июля 2017

Я знаю, что на этот вопрос уже ответили, но вот более простой код:

C #:

ScriptManager.RegisterStartupScript(this, this.GetType(), "FocusScript", "setTimeout(function(){$get('" + btnOk.ClientID + "').focus();}, 100);", true);

VB:

ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "FocusScript", "setTimeout(function(){$get('" + btnOk.ClientID + "').focus();}, 100);", True)
0 голосов
/ 31 января 2015

Удалить Style="display: None1" с панели управления

...