我有一个项目,它从SQL数据库中读取行并在datagridview中显示它们。那部分效果很好。我想通过删除网格中的每个非选定行来显示这些记录的子集。这是代码:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (!row.Selected)
{
if (!row.IsNewRow)
{
dataGridView1.Rows.Remove(row);
//dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
}
}
}
它从底部向上删除到所选区域,并在上面留下未选择的行,或者删除选定的行以及未选择的行。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
正在删除其他行,因此某些元素被错误地跳过。
您可以使用2个循环:第一个用于反转所选项目,第二个用于删除所选项目(在反转之前可能是之前未选择的项目)。
foreach (DataGridViewRow row in dataGridView1.Rows)
{
// invert row selections
if (!row.Selected)
{
if (!row.IsNewRow)
{
row.Selected = true;
}
}
else
{
row.Selected = false;
}
}
// remove selected rows
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
dataGridView1.Rows.Remove(row);
}