【问题标题】:DataGridView update Cell Value while typing键入时 DataGridView 更新单元格值
【发布时间】:2020-09-16 17:39:17
【问题描述】:

我有一个包含 QUANTITY、UNIT PRICE 和 VALUE 列的数据网格视图。我想要做的是在改变 QUANTITY 时我需要改变 VALUE 。 价值 = 数量 * 单价

我为 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");
    }
 }

【问题讨论】:

  • 也许你应该尝试重新绑定网格的数据源
  • 打字时keydown事件发生了,但是当输入还无效时怎么办?

标签: c# winforms datagridview


【解决方案1】:

我不知道我是否理解正确。您正在尝试在键入时即时更新值?如果是这样,那么您可能还应该使用 DataGridView.CurrentCellDirtyStateChanged 事件来提交单元格值更改。下面是基于MSDN的例子:

private void dgvSale_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dgvSale.IsCurrentCellDirty)
    {
        dgvSale.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

这是你需要的吗?

【讨论】:

  • 是的。这就是我需要的。现在 VALUE 在输入数量时会更新。
【解决方案2】:
 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();
    }            
}

enter link description here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多