2015-06-10 24 views
0

您好人我試圖更新正在訂購的產品的數量。如果產品已經存在於用戶的「籃子」中而不是插入新行,則應該更新現有項目所在行的數量。它正在更新,但新行也被插入應該已被添加到原始行,像這樣數量:列表視圖的一行正在更新,但重複的行也被插入

enter image description here

我猜的東西是在我的代碼邏輯錯誤,但我可以沒有發現它。

private void btn_add_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      ListViewItem item = new ListViewItem(list_Select_Product.SelectedItems[0].Text); 
      item.SubItems.Add(list_Select_Product.SelectedItems[0].SubItems[1].Text); 
      item.SubItems.Add(txt_quantity.Text); 

      bool ok = true; 
      if (!validNumbers(txt_quantity)) 
       ok = false; 
      if (!validLength(txt_quantity, 1, 2)) 
       ok = false; 

      if (ok == true) 
      { 
       foreach (ListViewItem lvi in list_view_orderitems.Items) 
       { 

        if(lvi.SubItems[0].Text == list_Select_Product.SelectedItems[0].Text) 
        { 
         int UpdateQunat = Convert.ToInt32(lvi.SubItems[2].Text); 
         int AddMe = Convert.ToInt32(txt_quantity.Text); 
         UpdateQunat = UpdateQunat + AddMe; 
         lvi.SubItems[2].Text = Convert.ToString(UpdateQunat); 
         list_view_orderitems.Items.Add(item); 

        } 
        else if (lvi.SubItems[0].Text != list_Select_Product.SelectedItems[0].Text) 
        { 
         list_view_orderitems.Items.Add(item); 

        } 
       } 
       if(list_view_orderitems.Items.Count == 0) 
       { 
        list_view_orderitems.Items.Add(item); 


       } 

      } 


     } 
     catch 
     { 

      MessageBox.Show("A product must be selected"); 
     } 
    } 

回答

1

在foreach循環中稍微靠近一點。你也可以在那裏添加它。 (所以你應該刪除)

foreach (ListViewItem lvi in list_view_orderitems.Items) 
{ 
    if(lvi.SubItems[0].Text == list_Select_Product.SelectedItems[0].Text) 
    { 
     int UpdateQunat = Convert.ToInt32(lvi.SubItems[2].Text); 
     int AddMe = Convert.ToInt32(txt_quantity.Text); 
     UpdateQunat = UpdateQunat + AddMe; 
     lvi.SubItems[2].Text = Convert.ToString(UpdateQunat); 
     // adding it again. This line is not needed. 
     list_view_orderitems.Items.Add(item); 
    } 
    else if (lvi.SubItems[0].Text != list_Select_Product.SelectedItems[0].Text) 
    { 
     list_view_orderitems.Items.Add(item); 
    } 
} 
+0

乾杯,不能相信我沒有」 t spot that。謝謝! – COYG

+0

發生在我們身上! – bkribbs

1

我這一點,它這個if你需要擺脫item.Add的(我將其標記:

if(lvi.SubItems[0].Text == list_Select_Product.SelectedItems[0].Text) 
        { 
         int UpdateQunat = Convert.ToInt32(lvi.SubItems[2].Text); 
         int AddMe = Convert.ToInt32(txt_quantity.Text); 
         UpdateQunat = UpdateQunat + AddMe; 
         lvi.SubItems[2].Text = Convert.ToString(UpdateQunat); 
         // list_view_orderitems.Items.Add(item); 

        } 
+0

感謝您的幫助! – COYG

相關問題