C#实现对DataGridView的删除操作
namespace HdhCmsDeleteDataGridView
private class HdhCmsDataGridRemove{
private void button1_Click(object sender, EventArgs e)
{
// 1. 强制提交当前编辑
dataGridView1.EndEdit();
// 2. 获取选中的行(逆序排序)
var rowsToDelete = dataGridView1.SelectedCells
.Cast<DataGridViewCell>()
.Select(cell => cell.OwningRow)
.Distinct()
.Where(row => !row.IsNewRow) // 过滤新行
.OrderByDescending(row => row.Index)
.ToList();
// 3. 操作 DataTable 删除数据
if (dataGridView1.DataSource is DataTable dataTable)
{
foreach (DataGridViewRow row in rowsToDelete)
{
if (row.DataBoundItem is DataRowView rowView)
{
DataRow dataRow = rowView.Row;
// 如果是新增但未提交的行,拒绝更改
if (dataRow.RowState == DataRowState.Added)
{
dataRow.RejectChanges(); // 直接丢弃新增行
}
else
{
dataTable.Rows.Remove(dataRow); // 正常删除已提交的行
}
}
}
//显示DataGridView与DataTable的数据是否一致,实际运用时可以隐藏
MessageBox.Show(dataGridView1.Rows.Count + "==" + dataTable.Rows.Count);
}
// 4. 刷新界面绑定(可选)
dataGridView1.Refresh();
}
}
}
查看更多关于C#实现对DataGridView的删除操作的详细内容...