我的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
时,它没有更改Total
,Total
假设更新和更改也基于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之前和之后的问题的屏幕截图:
当我未将Quantity
更改为500
(仍为100)
我已将Quantity
更改为500
,但Total
仍然与Quantity 100
基本上,我希望当用户在DataGridView中单击EDIT并对其进行更改时(假设用户在DataGridView中对Quantity
进行更改,DataGridView中的Total
也应该更改)
EDITED :
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
仍然保持不变。
答案 0 :(得分: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();
}
}