根据单元格内容删除DataGridViewRow

本文关键字:删除 DataGridViewRow 单元格 | 更新日期: 2023-09-27 17:59:41

在过去的一个小时里,这一直让我头疼。我想根据特定单元格是否与输入数据匹配来删除datagridView行。并将它下面的所有其他行上移(我不知道这可能会自动完成,我只是不想要任何空白行)。

到目前为止,这就是我所拥有的,但我在"dataGridView1.SelectedRows"上出现了"对象引用未设置为对象实例"错误:

foreach(DataGridViewRow row in dataGridView1.SelectedRows)
{
    if (row.Cells[0].ToString() == "test")
    {
        dataGridView1.Rows.Remove(row);
    }
}

谢谢你的帮助!

根据单元格内容删除DataGridViewRow

尝试这个

foreach (DataGridViewRow item in dataGridView1.SelectedRows)
     {
         dataGridView1.Rows.RemoveAt(item.Index);
     }

一个好的扩展方法怎么样?

dataGridView1.TrimByCellValue( "targetvalue" );

将代码复制到DataGridViewExtension.cs

using System.Windows.Forms;
public static class DataGridViewExtensions
{
    public static void TrimByCellValue(this DataGridView grid, string deleteme)
    {
        System.Diagnostics.Trace.WriteLine("DataGridViewExtensions->Trim()");
        foreach (DataGridViewRow _row in grid.Rows)
        {
            foreach (DataGridViewCell _cell in _row.Cells)
            {
                if ((_cell.Value != null) && (!string.IsNullOrEmpty(_cell.Value.ToString())))
                {
                    if ( _cell.Value.ToString().CompareTo(deleteme) == 0 )
                            grid.Rows.Remove(_row);
                }
            }
        }
    }
}