2017-10-17 136 views
1

我有一個datagridview我在其中添加一些列,第一列有複選框 當我嘗試選擇與複選框多行並刪除它,它只即使當我選擇多行時,也會每次刪除一行。c# - 無法刪除與sqlite數據庫datagridview中的多行

我用填充datagridview的

SQLiteDataAdapter da = new SQLiteDataAdapter("Select * From Data", con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     foreach (DataRow item in dt.Rows) 
     { 
      int n = dataGridView1.Rows.Add(); 
      dataGridView1.Rows[n].Cells[0].Value = "false"; 
      dataGridView1.Rows[n].Cells[1].Value = item["id"].ToString(); 
      dataGridView1.Rows[n].Cells[2].Value = item["car_num"].ToString(); 
      dataGridView1.Rows[n].Cells[3].Value = item["customer"].ToString(); 
      dataGridView1.Rows[n].Cells[4].Value = item["driver"].ToString(); 
      dataGridView1.Rows[n].Cells[5].Value = item["first"].ToString(); 
      dataGridView1.Rows[n].Cells[6].Value = item["second"].ToString(); 
      dataGridView1.Rows[n].Cells[7].Value = item["sum"].ToString(); 
      dataGridView1.Rows[n].Cells[8].Value = item["price"].ToString(); 
      dataGridView1.Rows[n].Cells[9].Value = item["date1"].ToString(); 
      dataGridView1.Rows[n].Cells[10].Value = item["date2"].ToString(); 
      dataGridView1.Rows[n].Cells[11].Value = item["city"].ToString(); 
      dataGridView1.Rows[n].Cells[12].Value = item["type"].ToString(); 

     } 

我使用的代碼刪除

private void bDelete_Click(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow item in dataGridView1.Rows) 
     { 

       if (bool.Parse(item.Cells[0].Value.ToString())) 
      { 
       if (MessageBox.Show("Are you sure you want to delete these data ? ", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) 
       { 
        con.Open(); 
       SQLiteCommand cmd = new SQLiteCommand("Delete From Data Where id='"+item.Cells[1].Value.ToString()+"'", con); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 
       SQLiteDataAdapter da = new SQLiteDataAdapter("Select * From Data", con); 
       DataTable dt = new DataTable(); 
       dataGridView1.Rows.Clear(); 

       da.Fill(dt); 
       MessageBox.Show("Success"); 
      } 

     } 
     } 
+0

是否會引發異常或者什麼都沒有發生? –

+0

如果您選擇了多行並單擊刪除,多次彈出消息框? – MisterMystery

+0

也可以在刪除方法中清除'dataGridView1'後在哪裏填充? – MisterMystery

回答

0

的代碼,我認爲這個問題是dataGridView1.Rows.Clear(); foreach循環中。由於foreach循環在(DataGridViewRow item in dataGridView1.Rows)上迭代,所以在清除行之後,沒有什麼可以迭代了。

+0

我刪除dataGridView1.Rows.Clear();現在消息彈出多次,我不能做一次嗎? –

+0

您將不得不將if語句與foreach循環外部的消息框一起移動。 – MisterMystery

+0

也不要從數據庫中填充數據表直到foreach循環完成。您想要刪除所有選定的行,然後重新填充數據表。 – MisterMystery