C#中DataGridView移除选中行

来源:互联网 发布:魔法王座数据 编辑:程序博客网 时间:2024/04/29 17:47

在项目开发中总会遇到DataGridview中移除多个选中行需求,而往往会遇到少删除一行问题,因为每次移除一行DataGridview数据DataGridview下标会立即改变,从而导致有些选中行未移除,以下为删除代码:

定义一个全局DataTable

        private DataTable _dtData;

       //查询数据库数据返回DataTable赋给_dtData,相信程序员都会,将_dtData绑定到DataGridView上

       this.DataGridView1.DataSource=_dtData;

      窗体如下图:

      

        


这个 DataGridView手动添加两列一列“选择”列为DataGridViewCheckBoxColumn类型,相信大家都会添加,不解释了

DataGridView显示完数据后,选中几行,加一个按钮事件(作为删除测试)

事件中代码如下:

            int rowCount = this.DataGridView1.Rows.Count;//保持循环行数不变
            int k = 0;//标记减少的行数
            for (int i = 0; i < rowCount; i++)
            {
                object obj = this.DataGridView1.Rows[i-k].Cells[0].Value;//获取选中行的值i-k保持行下标不变
                if (obj != null && obj.ToString() == "True")//True必须这样写 不能写成true
                {
                    int rowIndex = this.DataGridView1.Rows[i-k].Cells[0].RowIndex;//原来的行下标
                    DataRow row = (this.DataGridView1.Rows[rowIndex].DataBoundItem as DataRowView).Row;
                    _dtData.Rows.Remove(row);
                    k++;//减少的行数加1
                }
            }

原创粉丝点击