Захват клавиши Enter при редактировании текстового поля GridView - PullRequest
2 голосов
/ 03 ноября 2008

У меня GridView определен так:

<asp:GridView ID="myGridView" ruant="server">
    <asp:BoundField DataField="myField" />
    <asp:CommandField ShowDeleteButton="true" ShowEditButton="true" />
</asp:GridView>

После того, как я перевел строку в режим редактирования с помощью кнопки «Редактировать», как мне перехватить клавишу «Ввод» и вызвать итоговое обновление в строке? Прямо сейчас, если я нажму Enter, страница перезагрузится, то, что было введено в TextBox, потеряно, и строка останется в режиме редактирования. Я знаю, как полностью отключить клавишу ввода в форме (текущее решение), но я бы хотел, чтобы она запускала команду обновления.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2008

Ну, используя знания из вопроса, который вы связали, все просто:

string js = "if (event.keyCode == 13) this.form.submit();"
myGridView.Attributes.Add("onkeydown", js);

Как мы выяснили в комментариях, это создает небольшую проблему. Серверное событие GridView_RowUpdating больше не запускается, но автор вопроса полагается на него.

Вкратце - модель событий сервера опирается на поле формы __EVENTTARGET, которое необходимо установить. Это поле формы не отправляется при вызове form.submit(). Решением было бы «нажать» соответствующую кнопку с помощью JavaScript.

string js = "if ((event.which && event.which == 13) || " 
            + "(event.keyCode && event.keyCode == 13)) "
            + "{document.myForm.Update.click();return false;} "
            + "else return true;";
myGridView.Attributes.Add("onkeydown", js);

См. «Использование клавиши ввода для отправки формы» на AllAsp.net, которая более подробно описывает проблему.

0 голосов
/ 25 мая 2009

Установите для свойства «UseSubmitBehavior» кнопок на странице значение «False» (по умолчанию установлено значение True) решает проблему отправки в нескольких комментариях.

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