2

次のように定義された GridView があります。

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

[編集] ボタンを使用して行を編集モードにした後、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 に答える