2012-09-04 126 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

相關問題