2015-06-10 22 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

相关问题