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

标签 c# winforms datagridview

我的 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/

相关文章:

javascript - 如果重构,重构 AJAX 调用将不起作用

c# - C#'s readonly vs C++' s const - 等价物

c# - 如何在 C# 中使表单的一部分部分透明?

c# - 在 C# 中向图像添加 EXIF 信息

c# - 如何在 C# 中的 datagridview 中找到最接近的值?

c# - 代码格式中的缩进和对齐

c# - NPOI - 如何区分日期时间格式的数字 Excel 单元格 (c#)

c# - 将 DataGridView 内容复制到剪贴板。粘贴时未选择的行将作为空白行出现。!

c# - datagridview 事件的枚举索引

c# - 将 DataGridView 绑定(bind)到可能包含零个元素的 IBindingList