ASPX Textbox: выполнить метод при нажатии клавиши возврата - PullRequest
0 голосов
/ 23 октября 2008

У меня есть окно поиска, в котором нет кнопки отправки, мне нужно нажать Enter, а затем выполнить метод, как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 23 октября 2008

Вы также можете сделать что-то простое с CSS:

<asp:Panel DefaultButton="myButton" runat="server">
    <asp:TextBox ID="myTextBox" runat="server" />
    <asp:Button ID="myButton" runat="server" onclick="myButton_Click" style="display: none; "  />
</asp:Panel>

Панель может или не может быть необходимой в зависимости от вашей реализации и окружающих элементов управления, но это работает и делает обратную передачу для меня.

2 голосов
/ 23 октября 2008

Вы можете добавить скрытую кнопку на страницу и подключить свой метод к событию нажатия этой кнопки. Затем добавьте небольшой кусочек JavaScript, чтобы вызвать действие обратной передачи этой кнопки при нажатии клавиши ввода внутри текстового поля.

this.myTextBox.Attributes.Add(
    "onkeydown", 
    "return keyDownHandler(13, 'javascript:" 
     + this.Page.ClientScript.GetPostBackEventReference(this.myButton, string.Empty).Replace("'", "%27") 
     + "', event);");

(Вы также можете заменить жестко запрограммированные 13 на Windows.Forms.Keys .Enter, если вы предпочитаете более легкую для чтения версию.)

Где keyDownHandler - это функция JavaScript, подобная этой:

function keyDownHandler(iKeyCode, sFunc, e) { 
    if (e == null) { 
        e = window.event; 
    } 
    if (e.keyCode == iKeyCode) { 
        eval(unescape(sFunc)); return false; 
    } 
}

Обратите внимание, что это основано на реализации DotNetNuke Веб-утилита ClientAPI .

0 голосов
/ 23 октября 2008

Используйте событие TextChanged и установите для свойства AutoPostBack значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...