C# 在datagridview中编辑成功,但不会更新特定列

C# 在datagridview中编辑成功,但不会更新特定列,c#,winforms,ms-access,datagridview,C#,Winforms,Ms Access,Datagridview,我已经可以编辑数据库中的数据了。但是我有一个问题,当我编辑和更新datagridview中的数量列时,它应该根据数量*小计更新datagridview中的总计列,但它只更新数量列,而不是价格 我哪里做错了 以下是截图: 正如您在“1”行中看到的,数量为100,小计为10000,因此,总数将为1000000。但是在“2”行中,我在datagridview中编辑之前的数量是100,并且总量是2000000,当我将数量更改为500时,总量仍然是2000000,总量应该是10000000 我哪里做错了

我已经可以编辑数据库中的数据了。但是我有一个问题,当我编辑和更新datagridview中的
数量
列时,它应该根据
数量*小计
更新datagridview中的
总计
列,但它只更新
数量
列,而不是价格

我哪里做错了

以下是截图:

正如您在“1”行中看到的,
数量
为100,
小计
为10000,因此,
总数
将为1000000。但是在“2”行中,我在datagridview中编辑之前的
数量是
100
,并且
总量是2000000,当我将
数量更改为500时,
总量仍然是2000000,
总量应该是10000000

我哪里做错了

以下是代码(我根据需要发布代码):

Total
在不在datagridview中时工作,它在这里(如屏幕截图所示):

但是,当它转到datagridview时,当我更改
数量时,它不会基于
小计*数量更新
总量

我感谢你的帮助和回答


多谢各位

为了使用正确的结果更新网格,您需要做两件事:第一件是更新数据集中的总数。第二种方法是将网格重新绑定到更新的数据集。最常见的方法是将数据源设置为null,然后返回到数据集。我还建议您查看sql语句,尤其是cmdSelect。它从未被使用过。
编辑:

看看这件事。开始编辑网格应该是一个好的开始。EditMode指定何时编辑单元格,cellEndEdit事件可用于更新网格中的数据。

datagridview已绑定到数据。你确定网格再次与更新的数据绑定了吗?我不确定Danexxtone先生。我在这件事上是新手,虽然啊,是的,你是对的,Danexxtone先生,我只是再次检查代码,我刚刚意识到,我只需要一个SELECT语句来执行两个UPDATE语句。谢谢Danexxtone,我会更新上面发布的代码。你可以在这里用答案更新网格:先生,你给我的链接是为了刷新datagridview,对吗?我想要的是,当我通过datagridview编辑数据时,它不会像文本框中那样更新(在提交到datagridview之前)
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();
                }
            }
        }