Я пытаюсь добавить значение datagridview и текстовое поле одновременно после нажатия кнопки, но данные дублируются в базе данных.Повторяющиеся данные в базе данных
Может кто-нибудь сказать мне, что проблема в моем коде, пожалуйста?
Мой код
private void btnPay_Click(object sender, EventArgs e)
{
decimal pay, balance, total;
total = decimal.Parse(txtNetTotal.Text);
pay = decimal.Parse(txtCash.Text);
balance = pay - total;
txtCash.Text = pay.ToString("0.00");
txtBalance.Text = balance.ToString("0.00");
try
{
foreach (DataGridViewRow row in dgvOrder.Rows)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString);
SqlCommand cmd = new SqlCommand("insert into tblOrder (ProductName,Quantity,ProductPrice,TotalPrice,Cash,Balance)" +
"values (@ProductName,@Quantity,@ProductPrice,@TotalPrice,@Cash,@Balance)", con);
cmd.Parameters.AddWithValue("@ProductName", Convert.ToString(row.Cells["colProduct"].Value));
cmd.Parameters.AddWithValue("@Quantity", Convert.ToString(row.Cells["colQuantity"].Value));
cmd.Parameters.AddWithValue("@ProductPrice", Convert.ToString(row.Cells["colPrice"].Value));
cmd.Parameters.AddWithValue("@TotalPrice", txtTotal.Text.Trim());
cmd.Parameters.AddWithValue("@Cash", txtCash.Text.Trim());
cmd.Parameters.AddWithValue("@Balance", txtBalance.Text.Trim());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
Здесь весь код для события кнопки.
где написано этот код и исполняется? может быть, этот метод называется дважды! – techspider
Когда вы отлаживаете это, сколько раз этот цикл повторяется? Включает ли 'dgvOrder.Rows' строку, которую вы не ожидаете? – David
Есть два ряда в вашем datagrid? hint-foreach (строка DataGridViewRow в dgvOrder.Rows) –