DATAGRIDVIEW循环删除行的问题
1.一个打印程序,通过在DATAGRIDVIEW中选择CHECKBOX来打印数据,刚开始设想的是打印一条,删除一条,但是当把打印的那条数据删除后,DATAGRIDVIEW就刷新了,CHECKBOX选择的钩也刷新了,后面选择的就不打印了。2.添加一个ARRAYLIST,每打印一条数据,添加一条到ARRAYLIST中,等打印完成后,再删除数据,但是问题就出现了,数据量比较大的时候,删除很慢,如果DATAGIRDVIEW中有5000数据,而打印的数据大余2000条数据,删除操作时有时候会造成程序报错。
部分代码如下:
ArrayList list = new ArrayList();
foreach (DataGridViewRow row in this.dgvLabel.Rows)
{
if ((bool)row.Cells[0].EditedFormattedValue == true)
{
打印;
list.add(row);
}
}
for (int i = 0; i < list.Count; i++)
this.dgvLabel.Rows.Remove((DataGridViewRow)list[i]);
请大家帮忙看看有没有更好的办法解决,谢谢 --------------------编程问答--------------------
为什么没有兄弟帮我看看呢。 --------------------编程问答-------------------- this.dgvLabel.Rows.Remove((DataGridViewRow)list[0])
就行了吧,删除一条,LIST应该会减1吧 --------------------编程问答-------------------- for (int i = 0; i < list.Count; i++)
{
this.dgvLabel.Rows.Remove((DataGridViewRow)list[0]);
} --------------------编程问答--------------------
你这个0只是删除一条数据。。唉,我要做的是循环删除,主要是删除很慢。 --------------------编程问答-------------------- 。。。。。。。。。我再顶一下 --------------------编程问答-------------------- 你删除以后,后面的一行不就变成第0行了吗?主要循环删除第0行就行了 --------------------编程问答-------------------- 你删除第1行以后,后面的一行不就变成第1行了吗?循环删除第1行就行了 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
for (int i = 0; i < list.Count; i++)
{
this.dgvLabel.Rows.Remove((DataGridViewRow)list[0]);
}
这是删除LIST[0]的数据,你的意思就是,DATAGRIDVIEW删除LIST[0]里面的数据后,再删除LIST[0]?
如果是这样的话,DATAGIRDVIEW肯定找不到这条数据了,因为LIST[0]的数据始终存在。除非删除数据的同时也删除LIST[0]的数据 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 用这个即可:
for (int i = 0; i < dataGridViewX1.Rows.Count;i ++ )
{
if (dataGridViewX1.Rows[i].Cells["gou"].Value.ToString() =="N") //未勾选的列
{
dataGridViewX1.Rows.RemoveAt(i);
i--; //关键在这里
}
}
补充:.NET技术 , C#