2016-05-04 64 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语句来包含足够的列,以便删除你想要的行。如果您无法根据网格视图中选定行中的值确定表格中的唯一行,那么您基本上运气不佳。

相关问题