2016-05-04 93 views
0

代碼唯一的問題是,當存在相同的Id時,它也會將其刪除,這並不是真正刪除我在datagridview中選擇的行。如何刪除數據庫中datagridview中的選定行?

 private void Delete_Button_Click(object sender, EventArgs e) 
    { 

     if (dataGridView1.SelectedRows.Count > 0) 
     { 
      int Index = dataGridView1.CurrentCell.RowIndex; 
      if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
      { 
       string delete = dataGridView1.Rows[Index].Cells[0].Value.ToString(); 
       SqlCeCommand cmd = new SqlCeCommand("delete from Contact_List where Id "+ delete + "'", con); 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Information Deleted....."); 
       filldata(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please Select a Row"); 
     } 
     con.Close(); 
    } 

任何人都可以幫我嗎?所以這段代碼只會刪除我選擇的行以及數據庫。

謝謝!對不起英語不好

+0

是否沒有主鍵?您需要某種形式的主鍵來唯一標識一條記錄,否則無法告訴數據庫刪除特定的記錄。 –

+0

'「當有一個相同的ID」' - 現在做什麼?如果多個記錄具有*相同的標識符*,那麼您怎麼能夠分別識別它們? – David

+0

備註:qurey無效:''從Contact_List中刪除,其中Id ='「+ deleteIndex +」'「';必須被添加='並且使用不同的變量名稱來優先刪除(如deleteIndex)。 –

回答

0

首先,使用參數化查詢。其次,你需要在你的gridview中放置一個關鍵字段(即使你只是把它放在一個隱藏的列中),或者重寫你的delete語句來包含足夠的列,以便刪除你想要的行。如果您無法根據網格視圖中選定行中的值確定表格中的唯一行,那麼您基本上運氣不佳。

相關問題