0

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

当单元格 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"
4

2 回答 2

3

在没有解决问题的情况下已经回答,从那时起我意识到 .Value 是一个对象属性而不是一个字符串,所以据我所知调用 == 不能正常工作,即使对象是一个字符串(可能)。

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

于 2018-05-21T13:02:53.187 回答
1

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

如果您使用的是视觉工作室或其他东西,我建议插入一个断点并使用观察者,一个用于整个 if 语句条件,一个用于条件的后半部分,一个用于dgvAuthG.Rows[i].Cells[6].Value避免打印它。

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

于 2018-05-21T12:49:02.227 回答