Я работаю над приложением для ресторана, состоящим из двух форм: Form1 и Form2.
В Form2 есть пара текстовых полей, DataGridView и кнопка «Добавить продукт».
При нажатии кнопки «Добавить продукт» данные, введенные в текстовые поля выше, «перемещаются» в dataGridView, и появляется новый динамический столбец с кнопкой «стирания» для каждой строки.Если пользователь нажимает кнопку «Стереть», строка удаляется из dataGridView.
То, что я пытаюсь сделать, это стереть эту информацию строки из моей базы данных тоже.С кодом, который я публикую, я получаю, чтобы стереть эту строку, но я также стираю некоторые другие с теми же характеристиками, которые я не хочу.
Это атрибуты класса:
double precio = 0;
double cantidad = 0;
double subtotal = 0;
double total = 0;
// THIS CODE ADDS A NEW ROW TO THE DATAGRIDVIEW AND TO THE DATABASE
private void btnAgregarItem_Click(object sender, EventArgs e)
{
Pagos.Rows.Add(txtID.Text, txtNombre.Text, txtPrecio.Text, txtCantidad.Text, etiquetaSubTotalNum.Text);
int id_producto = Convert.ToInt32(txtID.Text.ToString());
string nombre = txtNombre.Text.ToString();
double precio = Convert.ToDouble(txtPrecio.Text.ToString());
double cantidad = Convert.ToDouble(txtCantidad.Text.ToString());
double subtotal = Convert.ToDouble(etiquetaSubTotalNum.Text.ToString());
String consulta = "INSERT INTO Productos (id_producto, nombre, precio, cantidad, subtotal) VALUES(@id_producto, @nombre, @precio, @cantidad, @subtotal)";
SQLiteCommand cmd = new SQLiteCommand(consulta, conexion);
cmd.Parameters.Clear();
cmd.Parameters.Add(new SQLiteParameter("@id_producto", id_producto));
cmd.Parameters.Add(new SQLiteParameter("@nombre", nombre));
cmd.Parameters.Add(new SQLiteParameter("@precio", precio));
cmd.Parameters.Add(new SQLiteParameter("@cantidad", cantidad));
cmd.Parameters.Add(new SQLiteParameter("@subtotal", subtotal));
cmd.ExecuteNonQuery();
}
// THIS CODE ERASES THE CURRENT ROW FROM THE DATAGRIDVIEW, BUT IT´S POSSIBLE THAT IT ALSO ERASES MORE THAN ONE LINE FROM THE DATABASE
private void Pagos_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (this.Pagos.Columns[e.ColumnIndex].Name == "colBotones")
{
Pagos.Rows.RemoveAt(Pagos.CurrentRow.Index);
int id_producto = Convert.ToInt32(txtID.Text.ToString());
string nombre = txtNombre.Text.ToString();
double precio = Convert.ToDouble(txtPrecio.Text.ToString());
double cantidad = Convert.ToDouble(txtCantidad.Text.ToString());
double subtotal = Convert.ToDouble(etiquetaSubTotalNum.Text.ToString());
String consulta = "DELETE FROM Productos where id_producto = @id_producto and nombre = @nombre and precio = @precio and cantidad = @cantidad and subtotal = @subtotal";
SQLiteCommand cmd = new SQLiteCommand(consulta, conexion);
cmd.Parameters.Clear();
cmd.Parameters.Add(new SQLiteParameter("@id_producto", id_producto));
cmd.Parameters.Add(new SQLiteParameter("@nombre", nombre));
cmd.Parameters.Add(new SQLiteParameter("@precio", precio));
cmd.Parameters.Add(new SQLiteParameter("@cantidad", cantidad));
cmd.Parameters.Add(new SQLiteParameter("@subtotal", subtotal));
cmd.ExecuteNonQuery();
}
}