低級錯誤!本來想實作一個簡單的應用。在DataGridView控件中,加入CheckBox列實作多選删除。
開始的思路,周遊CheckBox列,如果打了勾則進行删除操作:
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
object obj = dataGridView1.Rows[i].Cells[0].Value;
string select = obj == null ? "" : obj.ToString();
if (select.Trim() == "1")
{
//在這裡從資料源中删除資料行
}
}
測試發現時而準,時而不準,引起警覺,恍然大悟,這絕對是個低級錯誤啊。因為資料綁定控件有個友善的特性,資料源的變化可以直接展現到控件的表現上,可是在這裡,友善變成了不友善,它會導緻周遊的不準确。
第二種思路,先收集選擇的條目,然後進行統一删除。
DataRowView drv = dataGridView1.Rows[i].DataBoundItem as DataRowView;
SelectRow.Add(drv.Row);//SelectRow緩存選中的資料源行
foreach (DataRow dr in SelectRow)
_Reasons.Rows.Remove(dr);
這樣就OK啦。
本文轉自 王傑瑞 51CTO部落格,原文連結:http://blog.51cto.com/wangjierui/56358,如需轉載請自行聯系原作者