DataGridView的CelEndEdit事件可以满足你的要求,
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 2)
{
try
{
double price = Convert.ToDouble(dataGridView1.Rows[e.RowIndex].Cells[4].Value);
int count = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value);
double total = price * count;
dataGridView1.Rows[e.RowIndex].Cells[7].Value = total;
}
catch
{
return;
}
}
}
如果是在 winform 中,使用RowPrePaint
this.dataGridView1.RowPrePaint+=new DataGridViewRowPrePaintEventHandler(dataGridView1_RowPrePaint);
定义
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (e.RowIndex > dataGridView1.Rows.Count - 1) return;
DataGridViewRow dgr = dataGridView1.Rows[e.RowIndex];
// dgr.Cells[6].Value 第7个单元格,
//在此重新计算
}
如果是在web中,使用RowDataBound
问一下,你的总价是怎么绑定上去的,如果有公式,那你改变了之后,在重新绑定一下,就行。如果没有,在RowDataBound中写一下他的计算公式,就是获取列中的值来计算,在UpdateDataBound中再写一下重新绑定。