使用DatagridviewImageColumn删除DatagridviewRows

时间:2015-02-09 14:37:53

标签: c# sql winforms datagridview sql-delete

我有一个DataGridView,它与DataTable绑定,后者有另一个DataTable的外键。我添加了DatagridViewImageColumn来删除这两个DataTable中的行。我使用的代码如下。

private void dechargeDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    switch (dechargeDataGridView.Columns[e.ColumnIndex].Name)
    {
        case "delete":

            if (con.State != ConnectionState.Open)
            {
                con.Open();
            }

            SqlCommand deleteDechargeCmd = new SqlCommand("DELETE FROM [Decharge] WHERE NumeroDecharge = @NumDecharge", con);
            deleteDechargeCmd.Parameters.AddWithValue("@NumDecharge", dechargeDataGridView.Rows[e.RowIndex].Cells[0].Value.ToString());


            SqlCommand deleteLigneDCmd = new SqlCommand("DELETE FROM [LigneDecharge] WHERE NumeroDecharge = @Num", con);
            deleteLigneDCmd.Parameters.AddWithValue("@Num", dechargeDataGridView.Rows[e.RowIndex].Cells[0].Value.ToString());


            DialogResult result = MessageBox.Show("Voulez vous supprimer le Decharge de Livraison?", "Confirm product deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (result == DialogResult.Yes)
            {   
                deleteDechargeCmd.ExecuteNonQuery();
                deleteLigneDCmd.ExecuteNonQuery();
                MessageBox.Show("le Decharge de Livraison est supprimé avec succées");
                dechargeDataGridView.Rows.RemoveAt(e.RowIndex);
            }
            else
            {
            }
            con.Close();
            break;
    }
}

此代码不会出现任何错误。它执行得很完美,但实际上没有从两个表中删除任何行。我不知道这段代码中的错误在哪里?

1 个答案:

答案 0 :(得分:1)

此代码似乎是正确的,它必须正常工作,因此请检查

的值

参数可能是单元格不是

  

dechargeDataGridView.Rows [e.RowIndex] .Cells [0] .Value.ToString()

所以尝试写下这样的列名:

  

dechargeDataGridView.Rows [e.RowIndex] .Cells [ “的ColumnName”]。Value.ToString()