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键时出现提示!

  • 相关阅读:
    下载文档时Safari浏览器下载后出现".html"问题
    实体框架(Entity Frmaework)简介
    系统内置委托:Func/Action
    lambda表达式不使用委托(delegate) 用FUNC
    lambda表达式
    C#生成缩略图 (通用模式)
    从底层角度看ASP.NET-A low-level Look at the ASP.NET...
    网站前端优化
    HTTP协议
    什么是AJAX? AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。
  • 原文地址:https://www.cnblogs.com/skyblue/p/864058.html
Copyright © 2011-2022 走看看