C# dataGridView中怎么样动态改变列的值

2024-11-19 08:36:40
推荐回答(3个)
回答1:

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;
}
}
}

回答2:

如果是在 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

回答3:

问一下,你的总价是怎么绑定上去的,如果有公式,那你改变了之后,在重新绑定一下,就行。如果没有,在RowDataBound中写一下他的计算公式,就是获取列中的值来计算,在UpdateDataBound中再写一下重新绑定。