在项目开发中总会遇到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
                }
            }

C#中DataGridView移除选中行相关推荐

  1. Datagridview代码设置选中行后,没有触发SelectionChanged事件

    不知道大家有没有遇到过这个问题,在winform开发软件的过程中,使用Datagridview代码设置选中行后,没有触发SelectionChanged事件,但是通过界面点击单元格或者选中行却是可以触 ...

  2. C# dataGridView上下移动选中行

    /*DataGridView 实现行[Row]的上下移动,我这里用到了SelectedRows[0],而没用CurrentRow是有原因的    主要是这两段代码:    dataGridView1. ...

  3. 获取GridView中RowCommand的当前选中行的索引或主键Id

    获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...

  4. C# DataGridView控件选中行获取其值

    DataGridView的几个基本操作: 1.获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2.获得选中的总行数: dataGridView ...

  5. C# DataGridView如何获取选中行的某个数据

    DataGridView的几个基本操作: 1.获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2.获得选中的总行数: dataGridView ...

  6. datagridview后台获取选中行的值的几种方式

    1.双击datagridview中的一行,后台获取改行的一个或多个列 private void dgvImport_DoubleClick(object sender, EventArgs e){st ...

  7. ext 中checkbox 无法取消选中行,全选按钮全选问题

    1.ext 中checkbox 在选中几个记录时,在单击选中的一行记录,其他选中行会消失的问题,及全选框该不该选中的问题,将下面代码复制到项目中(可能会出现点击gridpanel 的行的时候,无法选中 ...

  8. datagridview取消默认选中_Winform DataGridView 取消默认选中行

    困境 网上有很多解决方法,可是很多读者照做并不生效.追究其原因,问题出现在许多博主没有搞清楚DataGridView绑定与当前触发事件的关系. 复现 private void Frm_Load(obj ...

  9. 【C#语言】DataGridView修改选中行颜色

    在项目实践过程中,需要修改选中行的颜色,以满足客户的需求. 事件 重新绘制行的颜色 RowPrePaint. 属性 获取或设置行的默认样式,除非重写默认样式,否则将用它们来呈现行中的单元格. publ ...

最新文章

  1. SBB:pH主导土壤中固氮群落的共存与装配
  2. linux_tomcat
  3. Matab 读取修改 XML
  4. 设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
  5. 裸奔浏览器_【大数据早报】上网=“裸奔”?单凭浏览器历史记录就能锁定身份...
  6. python模拟qq空间登录_模拟登录QQ空间
  7. Android 第十四课 使用LitePal添加数据(更新数据)
  8. 荣耀30S首发新一代神U麒麟820 5G:GeekBench得分媲美骁龙855
  9. Python学习—2048小游戏等4个小练习
  10. TCP/IP参考模型入门
  11. 项不会计算为接受 0 个参数的函数_玩转excel函数:详解四种计数函数,从基础到提高...
  12. C#WinForm实现对前一篇文章中的SFTP工具类的使用
  13. 错误:形状数与表记录数不匹配
  14. 2022BUAA数据结构期末大作业的一些想法
  15. java shiro_shiro(java安全框架)
  16. python画超长图-python实现按长宽比缩放图片
  17. Prometheus技术系列文章——prometheus调研总结
  18. SA与OOA的区别,个人理解
  19. 深度盘点:Python 变量类型转换的 6 种方法
  20. 什么是内存屏障?,为什么需要内存屏障?

热门文章

  1. 软件测试(网页,脚本)入门
  2. 机器学习(四)——Adaboost算法
  3. Mybatis实现联合查询(六)
  4. 步行速度快慢测试软件,超准!风靡跑圈的5公里跑步测试,进来看看你是哪个等级!...
  5. 关于企业软件资质申请流程以及时间规划(一)——软件著作权申请
  6. Qt 之设置 QWidget 背景色
  7. java登录界面代码
  8. 【物联网中间件平台-04】YFIOs驱动开发指南
  9. 免费的css模板下载
  10. UVA,10765 Doves and bombs