我的 winform 上有 datagridview。我正在 datagridview 中显示记录。现在,在 datagridview 上显示记录后,我想从 datagridview 中删除具有一个或多个空单元格的行,这些空单元格在该行的单元格中没有值。因此,我将检查每一行的每个单元格,如果有任何单元格为空或为空,然后使用 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;
}
}
}
然后问题是它无法正常工作,它不会删除所有具有空单元格的行。那么我应该在这里做什么?
最佳答案
完成您想要的操作的最简单方法是反向循环 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
来转换它),因为您的方式为我抛出了异常。
关于c# - 如何删除具有一个或多个空单元格或空单元格的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824576/