2017-07-22 63 views
0

我有兩個datagridviews。 datagridview1datagridview2。當我將產品從datagridview1增加到datagridview2時,datagridview1中的產品數量轉移到datagridview2。現在,當我從datagridview2中刪除產品時,我需要將其傳回datagridview1在datagridview中獲取單元格的2個值

enter image description here

這裏是我的代碼:

private void btnRemove_Click(object sender, EventArgs e) 
    { 

     int ind = findIndexForItem(dgvPOScart.CurrentRow.Cells[0].Value.ToString()); 

     int dgvCARTquantity = Convert.ToInt32(dgvPOScart.CurrentRow.Cells[4].Value.ToString()); 
     int dgvPOSquantity = Convert.ToInt32(dgvPOScart.Rows[ind].Cells[5].Value.ToString());  
     int dgvnewADDquantity; 

     dgvnewADDquantity = dgvPOSquantity + dgvCARTquantity; 

     foreach (DataGridViewRow item in this.dgvPOScart.SelectedRows) 
     {  
      dgvPOScart.Rows.RemoveAt(item.Index);   
     } 

    } 

而且對於助手代碼:

 private int findIndexForItem(string name) 
    { 
     int ind = -1; 
     for (int i = 0; i < dgvPOSproduct.Rows.Count; i++) 
     { 
      if (dgvPOSproduct.Rows[i].Equals(name)) 
      { 
       ind = i; 
       break; 
      } 
     } 
     return ind;     
    } 

我怎樣才能正確地調用ind? Rows[ind]是錯誤的,因爲IND是產品ID或值或cell[0]而不是行索引。還是有更簡單的方法來做到這一點?

+1

在findIndexForItem,測試應該是:如果(名稱==(串)dgvPOSproduct.Rows [I] .Cells [ 0] .Value)... – Graffito

+0

要安全:_.Cells [whatever] _ – TaW

回答

0

你的代碼有點奇怪,你正在foreach-SelectedRows,但你只計算當前行的新數量,爲什麼?

此外,你不應該看他們的名字的產品,因爲你有他們的ID(這是比名稱更獨特)。

爲了這個工作,你需要這樣的事:

private void btnRemove_Click(object sender, EventArgs e) 
{ 
    foreach (var row in dgvPOScart.SelectedRows) 
    { 
     // Get the row in dgvProducts and the quantity he'll gain back 
     var productRow = dgvPOSproduct.Rows[FindRowIndexByID(row.Cells[0].Value)]; 
     int qtyToAdd = Convert.ToInt32(row.Cells[4].Value); 

     // Add the quantity back 
     productRow.Cells[5].Value = Convert.ToInt32(productRow.Cells[5].Value) + qtyToAdd; 
    } 
} 

private int FindRowIndexByID(string id) 
{ 
    for (int i = 0; i < dgvPOSproduct.Rows.Count; i++) 
    { 
     if (dgvPOSproduct.Rows[i].Cells[0].Value == id) 
     { 
      return i; 
     } 
    } 

    return -1;    
} 
+0

它有一些錯誤先生。在btnremoveclick它說:「對象沒有包含'細胞'的定義在第5行和第6行,並在findrowindexbyid它說」左手邊輸入字符串「我想我應該只是把toString()?但在buttonremove上怎麼樣 – FutureDev

+0

是的,你應該把.ToString()放在FindRowIndexByID的.Value中。對於其他錯誤奇怪 – Haytam

相關問題