我的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;
}
}
}
然后问题是它没有正常工作,它不会删除所有具有空单元格的行。那我该怎么办呢?
答案 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;
}
}
}
}
我正在做一些你可能不需要做的额外的事情(代码只是从我的测试应用程序剪切和粘贴)
as
来表示它),因为你的方式是为我抛出一个例外。