GridVIew:编辑时切换编辑和更新按钮

时间:2012-03-06 16:54:07

标签: asp.net gridview

我希望GridView具有可见的“编辑”按钮和隐藏的“更新”按钮,并且当行编辑模式用于行切换可见性时,如this example in here(在页面中间,我认为他使用AutoGenerateEditButton = “真”)。

这是我的网格按钮:

    <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

谢谢

2 个答案:

答案 0 :(得分:3)

如果要将Edit按钮添加为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

这可能导致的唯一问题是您无法在该列上拥有自定义页脚模板。无论如何,有可能更好的方法来完成你试图用这个页脚完成的事情。

答案 1 :(得分: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>
相关问题