从数据网格视图中删除行

时间:2018-05-21 12:40:54

标签: c# if-statement datagridview datagridviewrow

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

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

2 个答案:

答案 0 :(得分:3)

在没有解决问题的情况下已经回答了,从那时起我意识到.Value是object property而不是字符串,so calling == doesn't work properly as far as I know即使对象是字符串(MAYBE)。

在检查相等性之前尝试在.Value上调用.ToString,或者使用.Equals(),后者在我看来更好。

答案 1 :(得分:1)

我建议您在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"当真实时会评估为真,很可能由于案例或其他事情而不是真的 - 不能说已经给出的信息不是我想不到的。