我有一個具有DefaultButton面板的頁面上的GridView控件。我試圖讓用戶編輯一行時使用「更新」按鈕來使用Enter鍵。它適用於鼠標。當我點擊「更新」時,該行將恢復到查看模式,並顯示更新後的值。面板DefaultButton和GridView控件與EditItemTemplate
當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 %>" />
您顯示它的方式不起作用,因爲GridView中的面板無法通過id引用默認按鈕。我必須在onrowdatababound事件中處理這個問題 - 太麻煩了。我的解決方法是通過scriptmanager刷新頁面。 – cdonner 2010-02-17 19:14:52
我想這將是這種情況。只是想我會把它扔在那裏。 – jWoose 2010-02-19 12:01:00