(傳)Visual C# WinForm中DataGrid大量刪除解決之道。

來源:互聯網
上載者:User

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鍵時出現提示!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.