如何删除有一个或多个空单元格或空单元格的行?

时间:2010-05-13 05:25:50

标签: c# winforms datagridview

我的winform上有datagridview。我在datagridview中显示记录。现在,在datagridview上显示记录之后,我想从datagridview中删除该行,该行具有一个或多个empy单元格,该单元格在该行的单元格中没有值。因此,如果有任何单元格空或null,我会检查每一行的每个单元格,然后使用RemoveAt()函数删除这些行。

我的代码是:

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    if (string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[j].Value.ToString()))
                    {
                        dataGridView1.Rows.RemoveAt(i);
                        break;
                    }
                }
            }

然后问题是它没有正常工作,它不会删除所有具有空单元格的行。那我该怎么办呢?

1 个答案:

答案 0 :(得分:3)

执行所需操作的最简单方法是反向遍历datagridview行。这样你的指数就会保持正确。

for (int i = dataGridView1.Rows.Count -1; i >= 0; i--)
{
    DataGridViewRow dataGridViewRow = dataGridView1.Rows[i];

    foreach (DataGridViewCell cell in dataGridViewRow.Cells)
    {
        string val = cell.Value as string;
        if (string.IsNullOrEmpty(val))
        {
            if (!dataGridViewRow.IsNewRow)
            {
                dataGridView1.Rows.Remove(dataGridViewRow);
                break;
            }
        }            
    }
}

我正在做一些你可能不需要做的额外的事情(代码只是从我的测试应用程序剪切和粘贴)

  • 我通常会将有问题的行抓到DataGridViewRow对象中。
  • 我正在检查IsNewRow属性,因为我的网格是可编辑的。
  • 我将值赋给一个字符串变量(用as来表示它),因为你的方式是为我抛出一个例外。