用联系的观点看问题——有感DataGridView多选删除问题的解决
2007-12-24 15:23:53
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wangjierui.blog.51cto.com/186879/56358 |
低级错误!本来想实现一个简单的应用。在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") { //在这里从数据源中删除数据行 } } 测试发现时而准,时而不准,引起警觉,恍然大悟,这绝对是个低级错误啊。因为数据绑定控件有个方便的特性,数据源的变化可以直接体现到控件的表现上,可是在这里,方便变成了不方便,它会导致遍历的不准确。
第二种思路,先收集选择的条目,然后进行统一删除。
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啦。
本文出自 “王杰瑞的技术博客” 博客,请务必保留此出处http://wangjierui.blog.51cto.com/186879/56358 本文出自 51CTO.COM技术博客 |



王杰瑞
博客统计信息
热门文章
最新评论
友情链接