我在一个页面上有一个 GridView 控件,该控件具有一个具有 DefaultButton 的面板。当用户编辑一行时,我试图让“更新”按钮与 Enter 键一起使用。它适用于鼠标。当我单击“更新”时,该行将恢复为查看模式并显示更新的值。
当 GridView 在面板中时,面板的默认按钮(提交页面)在我按 Enter 时触发,甚至在处理 RowCommand 之前,更新丢失。
当 GridView 不在面板中时,面板中的其他一些看似随机的按钮会触发,但不会触发我行的 EditItemTemplate 中的“更新”按钮。具体来说,页面上有一个 CalendarExtender,扩展器的弹出按钮会触发。完全不是我想要的。
我怎样才能让这个行为正确?
这是我的标记代码的结构:
<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
<!--Form with controls-->
<asp:ImageButton ID="btnWSPODateCal" runat="server" />
<!--this button fires when I press enter while editing a grid row:-->
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"
TargetControlID="tbPODate" PopupButtonID="btnWSPODateCal" />
<!--more controls-->
<div class="button_row">
<asp:ImageButton ID="btnCancel" runat="server" />
<asp:ImageButton ID="btnSubmit" OnClick="btnSubmit_Click" />
</div>
</asp:Panel>
<asp:GridView runat="server">
<Columns>
<asp:TemplateField>
<EditItemTemplate>
<asp:ImageButton CommandName="MyUpdate"
ID="btnSubmitRow" runat="server"
CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" />