2016-05-02 8 views
-1
private void deleteToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    int Index = 0; 
    if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
    { 
     string delete = dataGridView1.Rows[Index].Cells[1].Value.ToString(); 
     SqlCeCommand cmd = new SqlCeCommand("delete from Contact_List where Name='" + delete + "'", con); 
     con.Open(); 
     int result = cmd.ExecuteNonQuery(); 
     if (result == 1) 
     { 
      MessageBox.Show("Record Deleted Successfully"); 
      filldata(); 
     } 
     else 
     { 
      MessageBox.Show("Record not Deleted....Please try again."); 
     } 
    } 
} 
    con.Close(); 

なぜこのコードは2番目の行を選択したときに最初の行だけを削除するのですか?なぜこのコードは、datagridviewの最初の行だけを削除しますか?

助けてください!

+0

_Index = 0? – Steve

+1

コードを実行する前にIndex = 0を割り当てました。あなたは他に何を期待するでしょうか? – techspider

+0

しかし、他の記事では、選択した行が削除されることが示されています。だから私はそれをどのように変更するのですか?選択した行が削除されるようにするにはどうすればよいですか? – WordSide

答えて

0

最初の行にIndex = 0を割り当てました。したがって、そのメソッドを呼び出すたびに、常にインデックス0である最初の行が削除されます。

選択した行を削除する場合は、SelectedIndexを使用する必要があります。サンプルコードの下に考える:

string delete = dataGridView1.Rows[dataGridView1.SelectedIndex].Cells[1].Value.ToString(); 
0

変数Index0で初期化し、値が実行時に更新されませんので、毎回最初の行は削除し得ます。そのため、変数Indexを次のような現在の行インデックスで更新します。

Index= datagridview.CurrentCell.RowIndex; 
string itemToDelete = dataGridView1.Rows[Index].Cells[1].Value.ToString(); 
// this will be the `Cells[1]` value at the selected index 
+0

上記のコードで同じ名前の2つの情報を削除しないでください。 – WordSide

関連する問題