Ich habe ein GridView-Steuerelement auf einer Seite mit einem Panel, das eine DefaultButton hat. Ich versuche, die Schaltfläche "Aktualisieren" mit der Eingabetaste zu aktivieren, wenn ein Benutzer eine Zeile bearbeitet. Mit der Maus funktioniert es gut. Wenn ich auf "Aktualisieren" klicke, kehrt die Zeile in den Ansichtsmodus zurück und der aktualisierte Wert wird angezeigt.
Wenn die GridView im Panel ist, wird die Standardschaltfläche des Panels (die die Seite sendet) ausgelöst, wenn ich die Eingabetaste drücke, bevor der RowCommand überhaupt verarbeitet wird, und die Aktualisierung geht verloren.
Wenn die GridView nicht im Panel ist, wird eine andere scheinbar zufällige Schaltfläche im Panel ausgelöst, aber nicht die Schaltfläche "Update" im EditItemTemplate meiner Zeile. Insbesondere gibt es einen CalendarExtender auf der Seite, und die Popup-Schaltfläche des Extenders wird ausgelöst. Ganz und gar nicht das, was ich will.
Wie kann ich erreichen, dass sich dies korrekt verhält?
Hier ist die Struktur meines Markup-Codes:
<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 %>" />