从 datagridview 中删除一行

Removing a row from data grid view

您好,我正在尝试在某些情况下从数据网格视图中删除行。我已成功删除行,但这仅适用于第一种情况。

当单元格 6 为“”时,它会被删除,但是当单元格 6 为状态时,它不会被删除。你能帮忙吗,我们忽略了第二个条件。

       for (int i = dgvAuthG.Rows.Count - 1; i >= 0; i--)
        {
            if ((dgvAuthG.Rows[i].Cells[6].Value == "") || (dgvAuthG.Rows[i].Cells[6].Value == "Status"))
            {
                dgvAuthG.Rows.Remove(dgvAuthG.Rows[i]);
            }
        }
        dgvAuthG.Refresh();

以下是调试器的摘录

dgvAuthG.Rows[i].Cells[6].Value = "Status"

我建议你在 if 语句之前打印 dgvAuthG.Rows[i].Cells[6].Value 并仔细检查它肯定是 "Status",它区分大小写,所以 "status" 不会等同于 true。

如果您正在使用 visual studio 或其他东西,我建议插入一个断点并使用观察者,一个用于整个 if 语句条件,一个用于条件的后半部分,一个用于 dgvAuthG.Rows[i].Cells[6].Value 以避免必须打印它。

dgvAuthG.Rows[i].Cells[6].Value == "Status" 将在为真时评估为真,很可能由于大小写或其他原因它不是真的 - 不能说更多我认为没有给出的信息。

已经回答了但没有解决问题,从那时起我意识到 .Value 是一个 object property not a string, so calling == doesn't work properly as far as I know 即使对象是一个字符串(可能)。

尝试在检查相等性之前在 .Value 上调用 .ToString,或者使用 .Equals(),我认为后者是更好的做法。