我正在尝试在我拥有的 DataGridView 中做一个简单的“删除行”按钮,但问题是我希望它是一个 ImageButton 而不是一个简单的按钮。
目前,我将其设置为 ButtonColumn,但没有看到将其从带有文本的简单按钮更改为带有图像的按钮的可能性。
我知道这是可能的,并且希望相对简单,但我不确定如何去做。
编辑
对不起,我应该澄清一下。这是一个纯 C# 中的独立应用程序...我无权访问 ASP 表单类型。
我正在尝试在我拥有的 DataGridView 中做一个简单的“删除行”按钮,但问题是我希望它是一个 ImageButton 而不是一个简单的按钮。
目前,我将其设置为 ButtonColumn,但没有看到将其从带有文本的简单按钮更改为带有图像的按钮的可能性。
我知道这是可能的,并且希望相对简单,但我不确定如何去做。
编辑
对不起,我应该澄清一下。这是一个纯 C# 中的独立应用程序...我无权访问 ASP 表单类型。
<asp:buttonfield ButtonType="Image" ImageUrl="/images/edit.gif" commandname="ibtnEdit" HeaderText=" " />
如果您愿意只选择可点击的图像而不是 ImageButton,那么有一个非常简单的解决方案。
将 ImageColumn 添加到您的 dgView,将其“NullValue”设置为红色 X 或您想要的任何值。这将确保所有行将始终显示 X,而无需额外工作。
之后,您将要添加一个“CellContentClick”事件来捕获用户实际点击 X。
在单元格内容单击事件中,您可以检查是否
//check if your clicking on a cell inside the imagecolumn column
if(e.ColumnIndex == this.colImageColumn.index && e.RowIndex > 0)
//Delete Row e.RowIndex
这篇Code Project 文章看起来正是您所需要的。
在事件 dataGridViewMain_CellContentClick 上编写以下代码
if (e.ColumnIndex == dataGridViewMain.Columns["ImageColumn"].Index)
{
lblShowCellData.Text = dataGridViewMain.Rows[e.RowIndex].Cells["CustomerName"].Value.ToString();
// Do some thing else....
}
您可以在 GridView 中使用模板字段。像这样:
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:ImageButton ID="imgBtnDelete" runat="server" OnClick="imgBtnDelete_Click" ImageUrl="~/media/Delete.gif">
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>