[英]Deleting multiple rows in an unbound datagridview
我有一個項目,該項目從SQL數據庫讀取行並將其顯示在datagridview中。 這部分效果很好。 我想通過刪除網格中的每個未選擇的行來顯示這些記錄的子集。 這是代碼:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (!row.Selected)
{
if (!row.IsNewRow)
{
dataGridView1.Rows.Remove(row);
//dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
}
}
}
它從下至上刪除所選區域,並保留上面未選擇的行,或者刪除所選和未選擇的行。
有人能指出我正確的方向嗎?
這些行隨着其他行被刪除而被更改,因此某些元素被錯誤地跳過。
您可以使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.