根据单元格内容删除DataGridViewRow

时间:2014-04-22 19:39:03

标签: c#

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

这是我到目前为止所得到的“对象引用未设置为对象的实例”错误发生在“dataGridView1.SelectedRows”上:

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

一个不错的扩展方法怎么样?

dataGridView1.TrimByCellValue( "targetvalue" );

将代码复制到DataGridViewExtensions.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);
                }
            }
        }
    }
}