我有一个QUANTITY,UNIT PRICE和VALUE列的数据网格视图。我想要做的是在更改QUANTITY时我需要更改VALUE。 VALUE = QUANTITY * UNIT PRICE
我为gridview编写了代码' CellValueChanged'事件。但是当仅离开细胞时,VALUE将会改变。输入QUANTITY时我需要更改VALUE。
我的代码是这样的。请提出任何想法。
private void dgvSale_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dgvSale.Columns[e.ColumnIndex].Name == "Qty")
{
double qty = Convert.ToDouble(dgvSale["Qty", dgvSale.CurrentRow.Index].Value);
double rate = Convert.ToDouble(dgvSale["Rate", dgvSale.CurrentRow.Index].Value);
double totVal = qty * rate;
dgvSale["Value", dgvSale.CurrentRow.Index].Value = totVal.ToString("#,###.00");
}
}
答案 0 :(得分:6)
我不知道我是否理解你。您正在尝试在键入时动态更新值?如果是这样,那么您可能还应该使用 DataGridView.CurrentCellDirtyStateChanged 事件来提交单元格值更改。以下是基于MSDN的示例:
private void dgvSale_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgvSale.IsCurrentCellDirty)
{
dgvSale.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
这就是你需要的吗?
答案 1 :(得分:0)
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();
}
}