dataGridView多选删除
/// <summary>
/// 移除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
if(this.dataGridView2.RowCount>0)
{
foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (row.Cells["xuanze1"].Value != null)
{
if (row.Cells["xuanze1"].Value.ToString() == "True")
{
this.dataGridView2.Rows.Remove(row);
}
}
}
}
}
删除的数据老是对不上,麻烦高手帮我看看 --------------------编程问答-------------------- datagridview有一个提取选中行的属性,selectrows --------------------编程问答-------------------- 不是选中删除,是多选 --------------------编程问答-------------------- 这个属性获取的就是你选中的所有行。
你直接循环他进行删除,总比你把 datagridview 循环遍历一次来的更高效吧。 --------------------编程问答-------------------- foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (row.Cells["xuanze1"].Value != null)
{
if (row.Cells["xuanze1"].Value.ToString() == "True")
{
this.dataGridView2.Rows.Remove(row);
}
}
}
这种写法带来的问题就是foreach是只读的,你把其中一个删除了,所以下次再进行的时候,他的循环总数都发生变化了,能准确吗? --------------------编程问答-------------------- 你可以先用一个datagridviewrow[] 来记录要删除的行,在foreach循环结束后,再一次删除。
不要把你的移除放在foreach内部 --------------------编程问答-------------------- 用foreach会提示datagridview的行已经变更错误。
因为你删除第一行时,datagridview已经发生变化,那么foreach主体已经变化了。应该改为for循环,并且是从后往前 for (int i=10;i>=10;i--) --------------------编程问答-------------------- 麻烦能写下代码吗?this.dataGridView2.SelectedRows 我没有找到他的删除方法 --------------------编程问答-------------------- 我也知道他的值变了 --------------------编程问答--------------------
--------------------编程问答-------------------- 我的多选是根据CheckBox选中的数量而定的,this.dataGridView1.SelectedRows;这个没法获取 --------------------编程问答-------------------- 我做的是先循环要删除的数据,然后存入到一个集合中,然后从集合中删除 --------------------编程问答-------------------- 楼上的能附上代码吗,感激不敬 --------------------编程问答-------------------- 没人了吗? --------------------编程问答-------------------- 改用FOR吧
DataGridViewSelectedRowCollection temp_del_row_array = this.dataGridView1.SelectedRows;
foreach (DataGridViewRow item in temp_del_row_array)
{
this.dataGridView1.Rows.Remove(item);
}
补充:.NET技术 , C#