2

我有一个这样定义的 GridView:

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

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

4

2 回答 2

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 上的“使用 enter 键提交表单”,其中更详细地介绍了该问题。

于 2008-11-03T13:52:36.720 回答
0

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

于 2009-05-25T11:43:44.857 回答