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);