2010-02-15 64 views
2

我有一個具有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 %>" /> 

回答

0

試試這個。這只是一個猜測。

<asp:GridView runat="server"> 
<Columns> 
    <asp:TemplateField> 
     <EditItemTemplate> 
      <asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server"> 
       <asp:ImageButton CommandName="MyUpdate" 
        ID="btnSubmitRow" runat="server" 
        CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" /> 
      </asp:Panel> 

您可能必須在GridView的每個列中放置一個面板。唯一可能是問題的是面板能夠「查找」GridViewRow中的按鈕。

也有你試過?

<asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server"> 
    <asp:GridView runat="server"> 
     <Columns> 
     <asp:TemplateField> 
      <EditItemTemplate> 
       <asp:ImageButton CommandName="MyUpdate" 
        ID="btnSubmitRow" runat="server" 
        CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" /> 
... 
    </asp:GridView> 
</asp:Panel> 
+0

您顯示它的方式不起作用,因爲GridView中的面板無法通過id引用默認按鈕。我必須在onrowdatababound事件中處理這個問題 - 太麻煩了。我的解決方法是通過scriptmanager刷新頁面。 – cdonner 2010-02-17 19:14:52

+0

我想這將是這種情況。只是想我會把它扔在那裏。 – jWoose 2010-02-19 12:01:00