2012-03-06 82 views
1

我想和可見的「編輯」按鈕,隱藏的「更新」按鈕和一個GridView當切換編輯和更新按鈕行切換知名度enetring當編輯模式,就像this example in here(圍繞頁面的中間,我認爲他使用AutoGenerateEditButton =「true」)。GridView控件:編輯

這是我的網格按鈕:

<asp:TemplateField ItemStyle-CssClass="campoCentrado"> 
     <ItemTemplate> 
      <asp:ImageButton ID="btEditarGrid" ImageUrl="~/imagenes/edit.png" CommandName="Edit" OnClick="GridView_EditMode" runat="server" /> 
      <asp:ImageButton ID="btGuardarGrid" ImageUrl="~/imagenes/guardar.png" CommandName="Update" Visible="false" runat="server" /> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:ImageButton ID="btInsertarGrid" ImageUrl="~/imagenes/insertar.png" OnClick="GridView_Insert" runat="server" /> 
     </FooterTemplate> 
    </asp:TemplateField> 

而且我RowEditingevent,這不工作:

Private Sub gvCuestionarios_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvCuestionarios.RowEditing 
    If e.NewEditIndex >= 0 Then 
     Dim guardar As ImageButton = gvCuestionarios.Rows(e.NewEditIndex).FindControl("btGuardarGrid") 
     If Not guardar Is Nothing Then 
      guardar.Visible = True 
     End If 
    End If 
End Sub 

謝謝

+0

意味着行編輯事件是不觸發? – Jigs 2012-03-06 17:39:49

回答

2

在你的TemplateField添加一個EditItemTemplate裏,並把它裏面的更新按鈕。進入編輯模式後,如果您在ItemTemplate中顯示或不顯示按鈕,則不會顯示。這是因爲您處於EditItemTemplate而不是ItemTemplate。

<asp:TemplateField ItemStyle-CssClass="campoCentrado"> 
    <ItemTemplate> 
     <asp:ImageButton ID="btEditarGrid" ImageUrl="~/imagenes/edit.png" CommandName="Edit" runat="server" /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:ImageButton ID="btUpdateGrid" ImageUrl="~/imagenes/guardar.png" CommandName="Update" runat="server" /> 
     <!-- This would be to cancel out of Edit mode, would need to have a cancel.png --> 
     <asp:ImageButton ID="btGuardarGrid" ImageUrl="~/imagenes/cancel.png" CommandName="Cancel" runat="server" /> 
    </EditItemTemplate> 
    <FooterTemplate> 
     <asp:ImageButton ID="btInsertarGrid" ImageUrl="~/imagenes/insertar.png" OnClick="GridView_Insert" runat="server" /> 
    </FooterTemplate> 
</asp:TemplateField> 
3

如果你想添加一個編輯按鈕作爲ImageButton的,最簡單的方法是使用CommandField中:

<asp:GridView ID="gvCuestionarios" runat="server" 
    OnRowCancelingEdit="gvCuestionarios_RowCancelingEdit" 
    OnRowEditing="gvCuestionarios_RowEditing" 
    OnRowUpdating="gvCuestionarios_RowUpdating"> 
    <Columns> 
     <asp:CommandField 
      ShowEditButton="true" 
      ShowCancelButton="true" 
      ButtonType="Image" 
      EditImageUrl="~/imagenes/edit.png" 
      UpdateImageUrl="~/imagenes/guardar.png" 
      CancelImageUrl="~/imagenes/cancel.png" /> 
    </Columns> 
</asp:GridView> 

注意,我添加了一個取消按鈕與cancel.png當網格進入編輯模式將出現在圖像。

在RowEditing事件中,你現在不必擔心手工隱藏或顯示的按鈕,你只需設置EditIndex並重新綁定您的數據:

Private Sub gvCuestionarios_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) Handles gvCuestionarios.RowEditing 
    gvCuestionarios.EditIndex = -1 
    BindData() 
End Sub 

,這可能會導致唯一的問題是,您將無法在該列上使用自定義頁腳模板。無論如何,有可能有更好的方法來做你想用這個頁腳完成的事情。

+0

其實這兩種解決方案對我來說似乎都很好,我選擇他是第一個,因爲它更接近我的起點,但也會嘗試這一個,謝謝 – 2012-03-06 19:25:37