1. 程式人生 > >Winform中DataGridView的刪除功能

Winform中DataGridView的刪除功能

我的做法:

第一步:表格第一列插入DataGridViewCheckBoxColumn。

            DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
            checkColumn.HeaderText = "選擇";
            checkColumn.Name = "check";
            dataGridView1.Columns.Insert(0, checkColumn);//插入第0列,意味著原有的列將從0以後,即1開始排列

(DataGridView和DataTable,DataTable等一樣,行和列都是從0開始索引的)

第二步:在表格外面加一個刪除按鈕,當點選按鈕時判斷表格中所選中的行。

bool isChecked=(bool)dataGridView1.Rows[i].Cells[0].Value//未選中時得到的值為null,不好使 if(isChecked!=null&&isChecked==true)
bool isChecked=(bool)(dataGridView1.Rows[i].Cells[0].EditedFormattedValue)//未選中時得到的值為false

判斷第i行是否選中。

第三步:刪除選中行的資料。

這裡說明一下,我是將表格繫結到一個DataTable,這個DataTable中有三列,ID,number,name;所以在將資料從資料庫中讀到DataTable,將表格繫結到DataTable,並新增DataGridViewCheckBoxColumn列後:(ID列被設為不可見)

1. 在Datatable中:ID,number,name分列0,1,2列

2. 在表格中:ID,number,name分列1,2,3列

string ID = dataGridView1.Rows[checkNum].Cells[1].Value.ToString();//checkNum為選中行的序號,Cells[1]代表ID(主鍵)在第1列。在雖然ID列被隱藏了,但是在索引的時候在還在第1列。

然後根據ID刪除資料。

第四步:更新表格檢視

表格是繫結到DataTable的,只要將DataTable的例項currentTable中的相應行刪除,試圖就會自動更新了。

 currentTable.Rows.RemoveAt(checkNum);