您好我正在尝试在某些条件下从数据网格视图中删除行。我成功删除了行,但这只适用于第一个条件。
当单元格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"
答案 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"
当真实时会评估为真,很可能由于案例或其他事情而不是真的 - 不能说已经给出的信息不是我想不到的。