zoukankan      html  css  js  c++  java
  • (传)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键时出现提示!

  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/skyblue/p/864058.html
Copyright © 2011-2022 走看看