下面我有一个表中包含了学生在一个DataGridView结果: -为什么我的if else语句拒绝读取某一行?
ID NAME RESULT
1 Peter PASS
1 Peter SILVER
2 Sam FAIL
2 Sam SILVER
3 Simon FAIL
4 Cliff PASS
5 Jason FAIL
5 Jason FAIL
6 Leonard PASS
6 Leonard FAIL
我想制作一个简单的程序,将在一个按钮的点击过滤掉某些行的基础上的结果。我现在所取得的成就是能够筛选出那些以PASS和/或SILVER作为结果的人,并只显示FAIL。
现在的问题是,无论何时点击按钮,它都会删除带有合格和/或银色的行,第二行除外:1 Peter SILVER
。与此表留给我作为下面的最终结果是: -
来解决这个问题的唯一方法是现在再次点击该按钮。
下面是按钮的源代码: -
private void btnGenerate_Click(object sender, EventArgs e)
{
if (dtList.Rows.Count != 0)
{
try
{
foreach (DataGridViewRow dr in dtList.Rows)
{
//Column names in excel file
string colID = dr.Cells["ID"].Value.ToString();
string colName = dr.Cells["Name"].Value.ToString();
string colResult = dr.Cells["Result"].Value.ToString();
if (!colResult.Equals("FAIL", StringComparison.InvariantCultureIgnoreCase))
{
dtList.Rows.Remove(dr);
}
}
}
catch
{
}
}
}
空捕获会伤害你 –
这不是一个答案,但使条件'Count> 0'更有意义,并且可能会影响后者。 –
此外,当您尝试从您正在迭代的集合中删除行时,代码是否会失败? –