0

在此处输入图像描述

我想改变Amount cellwhen Qty or Price changed

Amount = Qty * Price

我试过这段代码,它总是给我 ArgumentOutOfRangeException 。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dg_invoices_items.Columns[e.ColumnIndex].Name == "qty")
            {   
                dg_invoices_items[e.RowIndex, 4].Value =Convert.ToString(
                        Convert.ToInt32(dg_invoices_items[e.RowIndex, 2].Value) *
                        Convert.ToInt32(dg_invoices_items[e.RowIndex, 3].Value));
            }
        }
4

2 回答 2

2

列索引从 0 开始,您的列索引太高了。

  • 第 1 列:0,产品
  • 第 2 栏:1,数量
  • 第三栏:2,价格
  • 第 4 栏:3,金额

为避免这种情况,您可能可以使用命名列:

dg_invoices_items["Qty", e.RowIndex].Value = Convert.ToString(
     Convert.ToInt32(dg_invoices_items["Price", e.RowIndex].Value) *
     Convert.ToInt32(dg_invoices_items["Amount", e.RowIndex].Value));

虽然我目前无法测试任何代码,所以这可能行不通。

于 2012-09-04T07:15:18.623 回答
0

我遇到过同样的问题。它的工作原理如下

dgvInvoice["TOTAL", e.RowIndex].Value = Convert.ToInt32(dgvInvoice["QUANTITY", e.RowIndex].Value.ToString()) * Convert.ToInt32(dgvInvoice["U_PRICE", e.RowIndex].Value.ToString());
于 2021-09-21T17:24:45.120 回答