У меня есть элемент управления GridView на странице с панелью DefaultButton. Я пытаюсь заставить кнопку «Обновить» работать с клавишей Enter, когда пользователь редактирует строку. Он отлично работает с мышью. Когда я нажимаю «Обновить», строка возвращается в режим просмотра и отображается обновленное значение.
Когда GridView находится в Panel, кнопка Panel по умолчанию (которая отправляет страницу) срабатывает, когда я нажимаю 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 %>" />