用联系的观点看问题——有感DataGridView多选删除问题的解决
2007-12-24 15:23
295 查看
低级错误!本来想实现一个简单的应用。在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啦。
开始的思路,遍历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啦。
相关文章推荐
- 用联系的观点看问题——有感DataGridView多选删除问题的解决
- 有感DataGridView多选删除问题的解决
- C# 解决Datagridview 删除行后index改变的问题
- 解决exchange 2013发送邮件都在草稿箱内不能发送和删除问题
- 解决jquery-easyui1.3.3 combobox 多选模式不兼容IE8问题
- SQLServer2008中“不允许保存更改。您所做的更改要求删除并重新创建以下表”问题解决方法
- 删除某一个指定类型的控件,及解决部分cell的重用问题
- 解决DataGridView在多线程中无法显示滚动条的问题
- 无法删除Oracle用户,提示存在当前连接问题的解决办法
- UITableview 多选 解决cell重用问题
- phoenix psqlline输入命令无法删除问题解决技巧
- Unlocker解决无法删除文件的问题
- 解决ASP 2.0中GridView控件的删除、插入、编辑命令操作客户端确认问题的另一方法
- 如何解决"需要来自'...'的权限才能删除此文件"的问题
- 如何解决电脑数据文件被误删除的问题
- 解决syszuxpinyin重复点击lineEdit无法弹出输入法界面和无法删除原有内容问题
- HBase Shell输入命令无法删除问题解决技巧
- 解决as无法删除class.jar问题
- Busybox: 解决IPV6路由表删除时遇到的:No Such Process问题
- source insight的中文删除解决办法,以及中文间距大的问题