我希望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
谢谢
答案 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>