2015-10-01 14 views
0

Я пытаюсь удалить строку данных в DataGridView и базе данных SQL Server. На первом щелчке на кнопке удаления он показываетУдаление строки из базы данных DataGridView и SQL Server

MessageBox.Show("Record Deleted Successfully!"); 

но выбранная строка не была удалена в DataGridView и в базе данных.

Это мой код:

private void PayratesDisplay() 
{ 
    con.Open(); 

    DataTable dt = new DataTable(); 
    adap = new SqlDataAdapter("select Membership AS [Membership Type], PerSession AS [Per Session], Discounted from tbl_payrates", con); 

    adap.Fill(dt); 

    dataGridView4.DataSource = dt; 

    con.Close(); 
} 

// Clear Data 
private void ClearData() 
{ 
    tbMemship.Text = ""; 
    tbPerses.Text = ""; 
    tbDisc.Text = ""; 
    ID = 0; 
} 

private void btn_PRdel_Click(object sender, EventArgs e) 
{ 
    if (ID != 0) 
    { 
     con.Open(); 

     cmd = new SqlCommand("DELETE FROM tbl_payrates WHERE Membership = @Membership", con); 
     cmd.Parameters.AddWithValue("@Membership", ID); 

     cmd.ExecuteNonQuery(); 

     con.Close(); 

     MessageBox.Show("Record Deleted Successfully!"); 

     PayratesDisplay(); 
     ClearData(); 
    } 
} 
+0

Как вы присваивающее значение 'ID'? –

+0

i объявлен в частичном классе Load: Form 'int ID = 1;' – Josh

+0

Итак, вы всегда удаляете значения, где 'Membership = 1'? Когда вы нажимаете кнопку «Удалить», имеет ли значение «ID» правильное значение? –

ответ

1

Если я правильно понимаю, вы пытаетесь удалить текущую строку сетки. Тогда ID член не нужен, и вы можете использовать что-то вроде этого

private void btn_PRdel_Click(object sender, EventArgs e) 
{ 
    var row = dataGridView4.CurrentRow; 
    if (row == null) return; 
    var ID = row.Cells["Membership Type"].Value; 
    // The rest of the code (w/o the "if ID != 0") 
} 
+0

'int ID = (int) row.Cells [" Тип членства "]. Значение;' в этой строке есть ошибка, которая является 'InvalidCastException' – Josh

+0

@Josh Хмм, что это такое - строка? Позвольте мне уточнить ответ. Но это то, что вы пытаетесь сделать, не так ли? –

+0

Я удаляю строку с целыми числами в ней – Josh

0

Изменить код, как этот

int r=cmd.ExecuteNonQuery(); 
con.Close(); 
if(r>0){MessageBox.Show("Record Deleted Successfully!");} 
Смежные вопросы