2012-09-04 129 views
0

enter image description here如何更改同一行中另一个单元格更改时DataGridView单元格的值?

我想更改Amount cellQty 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)); 
      } 
     } 

回答

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

虽然我不能测试任何代码那一刻,所以这可能不起作用。

+0

它没有工作,因为dg_invoices_items [e.RowIndex,“数量”]没有采取字符串参数,尽管我试图从0开始索引,我仍然得到相同的例外。 –

+1

应该是这样,但专栏第一:http://msdn.microsoft.com/en-us/library/ms158657.aspx –

+1

哦,你必须切换它们,列第一,将在我的文章中编辑此。 – MrFox

相关问题