0

我有个问题。这是我的问题:

我的 DataGridView 中有这样的东西:

Product Code || Quantity || Description || SubTotal || Total || ....... (and so on)

SM0001 for the Product Code, 100 for the Quantity, AS 5 for the Description, 10,000 for the Sub Total, and 1,000,000 for the Total

10,000以上是正确的,因为100我们得到了1,000,000

我将数据添加到 DataGridView,当数据添加到 DataGridView 时,我单击该 DataGridView 中的编辑,当我更改它的某些值时,它将被更改和更新。但是,问题是当我尝试将“数量”从100更改为时500,它并没有更改TotalTotal假设更新和更改也基于Quantity * Sub Total(因为我更改了Quantity

怎么样?

当我尝试从 DataGridView 更新它时,这是我上面的问题的代码:

private void DataGridViewCalculation(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                int _quantity = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[1].Value);
                int _subTotal = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[3].Value);
                int _total = Convert.ToInt32(_quantity * _subTotal);

                this.dataGridView1.Rows[i].Cells[4].Value = _total;
            }

            dataGridView1.DataSource = null;
            dataGridView1.DataSource = _ds.Tables[0];
        }

这是我在将数量从 100 更改为 500 之后和之前的问题的屏幕截图:

在此处输入图像描述

当我没有更改为时显示上面的屏幕截图Quantity500仍然为 100)

在此处输入图像描述

当我已经更改为时显示上面的屏幕截图Quantity500Total仍然与Quantity 100

基本上,我希望用户在 DataGridView 中单击 EDIT 并对其进行更改(假设用户Quantity在 DataGridView 中进行更改,DataGridView 中的Total也应该更改)

编辑

dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(this.DataGridViewCalculation);

private void DataGridViewCalculation(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex.Equals(1))
            {
                int _total = Convert.ToInt32(dataGridView1["Quantity", e.RowIndex].Value) * Convert.ToInt32(dataGridView1["SubTotal", e.RowIndex].Value);
                dataGridView1["Total", e.RowIndex].Value = _total.ToString();
            }
        }

注意

当我尝试更改Quantity值时,编辑后的代码仍然无法正常工作,Total仍然保持不变。

4

1 回答 1

2

您可以使用CellValueChanged事件。更改单元格值时将引发此事件。基本上你要做的是,

  • 通过检查列索引检查数量单元格是否被编辑
  • 使用已编辑的单元格获取Sub Total列的值并Quantity在同一行中。RowIndex
  • 将两者相乘并将其设置为Total单元格。

Sample Code

请注意,这是一个示例代码,在执行任何操作之前,您可能必须考虑将值转换为所需的数字格式。

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex.Equals("column Index of Quantity"))
        {
            double total = Convert.ToDouble(dataGridView1["Subtotal column name", e.RowIndex].Value) * Convert.ToDouble(dataGridView1["Quantity column name", e.RowIndex].Value);
            dataGridView1["Total Column name", e.RowIndex].Value = total.ToString();
        }            
    }
于 2013-09-27T12:32:25.533 回答