Visual C# WinForm中DataGrid批量删除解决之道。

WinForm中的DataGrid与WEBForm中的DataGrid相比,功能要少了许多,但是也有其WEBForm中的DataGrid不可比拟的功能。最近要做一个项目,项目中有一个要求是要在DataGrid中能够进行批量删除记录,而且删除只能是在数据集中进行,不能涉及到数据库。本来WinForm中的DataGrid中可以在选择多行后(按Ctrl然后点相应的行也可以选择不相邻的行)可以直接按键盘上的DEL键进行删除,但是项目要求在删除前要给一个提示,而我们都知道,直接按DEL键是没有任何提示的,所以这个删除事件只有自己写。开始以为很简单,只需要对整个DataGrid循环一次并判断某行是否选中,再在数据集中直接删除相应的行就可以了,但是这样只能删除选定行中的第一行,而其它行是不能删除的,因为每删除一行后,DataGrid刷新了一次,原来选定的行变成不选定了,而且每删除一行后数据集行的索引也相应发了变化。经过研究,终于找到了解决之道,具体办法如下:

 if(MessageBox.Show("删除的行不可恢复,你确定要删除吗?","警告",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes)
   {
    int ReCount=ds.Tables["CurrentTable"].Rows.Count;
    for(int i=0;i<ReCount;i++)
    {
     if(this.dataGrid1.IsSelected(i))
     {
      ds.Tables["CurrentTable"].Rows[i]["准考证号"]="*";
     }
    
    }
    DataRow[] findRows=ds.Tables["CurrentTable"].Select("准考证号='*'");
    for(int i=0;i<findRows.Length;i++)
    {
     findRows[i].Delete();
    }
    ds.Tables["CurrentTable"].AcceptChanges();
   }

可以把这个事件的快捷键设为DEL,则按DEL键时出现提示!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值