当前位置:编程学习 > C#/ASP.NET >>

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 我没有找到他的删除方法 --------------------编程问答-------------------- 我也知道他的值变了 --------------------编程问答--------------------

            DataGridViewSelectedRowCollection temp_del_row_array = this.dataGridView1.SelectedRows;

            foreach (DataGridViewRow item in temp_del_row_array)
            {
                this.dataGridView1.Rows.Remove(item);
            }
--------------------编程问答-------------------- 我的多选是根据CheckBox选中的数量而定的,this.dataGridView1.SelectedRows;这个没法获取 --------------------编程问答-------------------- 我做的是先循环要删除的数据,然后存入到一个集合中,然后从集合中删除 --------------------编程问答-------------------- 楼上的能附上代码吗,感激不敬 --------------------编程问答-------------------- 没人了吗? --------------------编程问答-------------------- 改用FOR吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,