2013-09-27 69 views
0

我有問題。這裏是我的問題:更新DataGridView內部的數量不會改變合計

我得到了我的DataGridView是這樣的:

​​

SM0001 for the Product Code, 100 for the Quantity, AS 5 for the Description, 10,000 for the Sub Total, and 1,000,000 for the Total

以上是正確的,因爲10,000100我們得到1,000,000

我添加數據到DataGridView,當數據已被添加到DataGridView,我點擊該DataGridView中的編輯,當我改變一些值在它上面,它會被更改和更新。但是,問題是,當我試圖從100「數量」更改爲500,它並沒有改變TotalTotal假設更新和改變Quantity * Sub Total太基礎的(因爲我改變Quantity

如何是這樣嗎?

這裏是上面當我試圖從DataGridView更新我的問題的代碼:

private void DataGridViewCalculation(object sender, EventArgs e) 
     { 
      for (int i = 0; i < dataGridView1.Rows.Count; i++) 
      { 
       int _quantity = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[1].Value); 
       int _subTotal = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[3].Value); 
       int _total = Convert.ToInt32(_quantity * _subTotal); 

       this.dataGridView1.Rows[i].Cells[4].Value = _total; 
      } 

      dataGridView1.DataSource = null; 
      dataGridView1.DataSource = _ds.Tables[0]; 
     } 

這是我的問題的上述後和前我從100改變量至500的屏幕截圖:

enter image description here

截圖上述顯示當我還沒有改變到Quantity500(仍然在100)

enter image description here

上面的截圖顯示,當我已經改變了Quantity500,但Total還是一樣Quantity 100

基本上,我希望當DataGridView的用戶點擊修改,在其所做的更改(假設用戶在DataGridView中對Quantity進行更改,DataGridView中的Total也應該改變)

EDITED

dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(this.DataGridViewCalculation); 

private void DataGridViewCalculation(object sender, DataGridViewCellEventArgs e) 
     { 
      if (e.ColumnIndex.Equals(1)) 
      { 
       int _total = Convert.ToInt32(dataGridView1["Quantity", e.RowIndex].Value) * Convert.ToInt32(dataGridView1["SubTotal", e.RowIndex].Value); 
       dataGridView1["Total", e.RowIndex].Value = _total.ToString(); 
      } 
     } 

注意

編輯的代碼仍然沒有工作時,我試圖改變Quantity值時,Total仍然相同。

回答

2

您可以使用CellValueChanged事件。單元格值更改時將引發此事件。 基本上你需要做的是,

  • 檢查的數量細胞是通過檢查列索引
  • 獲取使用編輯後的細胞RowIndex同一行中Sub Total列和Quantity的值進行編輯。
  • 將兩者相乘並將其設置爲Total單元格。

Sample Code

請注意,這是一個示例代碼,你可能要考慮執行任何操作之前將值轉換爲所需的數字格式。

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(); 
     }    
    } 
+0

先生,我要如何改變'如果(e.ColumnIndex.Equals( 「數量列索引」))?'我應該改變' 「」'什麼?該程序表示它是'對象' – Kaoru

+0

@Kaoru列數量列的索引,如果其第三列在網格中則索引應該是2.只給出沒有雙路qoutes的數字。 – Kurubaran

+0

我已經做了這個先生,但是當我運行該程序並在添加到DataGridView後更改'Quantity'值時,'Total'仍然保持不變。不會根據當前的'Quantity'(仍然是之前的'Quantity',這是我添加到DataGridView之後還沒有編輯DataGridView),我將在上面的問題中編輯代碼。 – Kaoru