编辑GridView文本框时捕获Enter键

时间:2008-11-03 13:49:34

标签: asp.net gridview

我有一个像这样定义的GridView:

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

使用“编辑”按钮将行置于编辑模式后,如何捕获Enter键并触发行上的结果更新?现在,如果我按Enter键,页面重新加载,输入到TextBox的内容将丢失,并且该行保持编辑模式。我知道如何在表单上disable the enter key entirely(当前的解决方法),但我想让它触发更新命令。

2 个答案:

答案 0 :(得分:3)

好吧,使用您链接的问题中的知识,很简单:

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上的"Using the enter key to submit a form",其中详细介绍了该问题。

答案 1 :(得分:0)

将页面上按钮的“UseSubmitBehavior”属性设置为“False”(默认为True) 在几条评论中解决了提交问题。