Я уже могу редактировать данные в базе данных. Но у меня возникла проблема, когда я редактирую и обновляю столбец Quantity
в datagridview, он должен обновить столбец Total
в datagridview на основе Quantity * SubTotal
, но это обновление только колонки Quantity
, а не цены.Редактировать в datagridview успешно, но он не обновляет определенный столбец
Где я сделал ошибку?
Вот скриншот:
Как вы можете видеть в рядах «1», то Quantity
100 и SubTotal
составляет 10000, поэтому Total
будет 1000000. Но в строках «2», то Quantity
, прежде чем я редактировать в DataGridView, то количество является 100
, а также Total
является 2000000, когда я изменить Quantity
к 500, то Total
еще 2000000, предполагаемый Total
быть 10000000.
Где я сделал ошибку?
Вот код (я выкладываю код по мере необходимости, в случае необходимости):
private void Updated(object sender, EventArgs e)
{
DataTable _dt = (DataTable)dataGridView1.DataSource;
if (_dt.DefaultView.Count > 0)
{
int rowNum = dataGridView1.CurrentRow.Index;
string productCode = Convert.ToString(_dt.DefaultView[rowNum]["ProductCode"]);
int quantity = Convert.ToInt32(_dt.DefaultView[rowNum]["Quantity"]);
int price = Convert.ToInt32(_dt.DefaultView[rowNum]["SubTotal"]);
int _price = Convert.ToInt32(_dt.DefaultView[rowNum]["Total"]);
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string _commandSelect = "SELECT [Quantity], [SubTotal], [Total] FROM [TransRecord] WHERE [ProductCode] = @ProductCode";
string commandUpdate = "UPDATE [Record] SET [Quantity] = @Quantity, [SubTotal] = @SubTotal, [Total] = @Total WHERE [ProductCode] = @ProductCode";
string _commandUpdate = "UPDATE [TransRecord] SET [Quantity] = @Quantity, [SubTotal] = @SubTotal, [Total] = @Total WHERE [ProductCode] = @ProductCode";
conn.Open();
using (OleDbCommand cmdUpdate = new OleDbCommand(_commandUpdate, conn))
using (OleDbCommand _cmdSelect = new OleDbCommand(_commandSelect, conn))
using (OleDbCommand _cmdUpdate = new OleDbCommand(commandUpdate, conn))
{
_cmdSelect.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);
_cmdSelect.Parameters["@ProductCode"].Value = productCode;
cmdUpdate.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);
_cmdUpdate.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);
cmdUpdate.Parameters.Add("@SubTotal", System.Data.OleDb.OleDbType.Integer);
_cmdUpdate.Parameters.Add("@SubTotal", System.Data.OleDb.OleDbType.Integer);
cmdUpdate.Parameters.Add("@Total", System.Data.OleDb.OleDbType.Integer);
_cmdUpdate.Parameters.Add("@Total", System.Data.OleDb.OleDbType.Integer);
using (OleDbDataReader dReader = _cmdSelect.ExecuteReader())
{
while (dReader.Read())
{
cmdUpdate.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);
_cmdUpdate.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);
cmdUpdate.Parameters["@ProductCode"].Value = productCode;
cmdUpdate.Parameters["@Quantity"].Value = quantity;
cmdUpdate.Parameters["@SubTotal"].Value = price;
cmdUpdate.Parameters["@Total"].Value = _price;
_cmdUpdate.Parameters["@ProductCode"].Value = productCode;
_cmdUpdate.Parameters["@Quantity"].Value = quantity;
_cmdUpdate.Parameters["@SubTotal"].Value = price;
_cmdUpdate.Parameters["@Total"].Value = _price;
int numberOfRows = _cmdUpdate.ExecuteNonQuery();
int _numberOfRows = cmdUpdate.ExecuteNonQuery();
}
dReader.Close();
}
}
conn.Close();
}
}
private void UpdatePrice(object sender, EventArgs e)
{
if (numericTextBox1.TextLength >= 6)
{
decimal quantity = Convert.ToInt32(this.numericUpDown1.Value);
decimal price = Convert.ToDecimal(this.numericTextBox2.Text);
int total = Convert.ToInt32(quantity * price);
if (numericUpDown1.Value > 0)
{
this.numericTextBox3.Text = total.ToString();
}
}
}
Total
работает, когда он не в DataGridView, то здесь (показан скриншот):
Но когда он идет к DataGridView и, когда я изменить Quantity
, не обновлять Total
на основе SubTotal * Quantity
Я ценю вашу помощь и ответ!
Большое спасибо!
Ваш datagridview привязан к вашим данным. Убедитесь, что сетка снова связана с обновленными данными? – Danexxtone
Я не так уверен, мистер Danexxtone. Я новичок в этом вопросе, хотя – Kaoru