一行列表视图正在更新,但也插入了重复行
Posted
技术标签:
【中文标题】一行列表视图正在更新,但也插入了重复行【英文标题】:One row of list view is updating, but duplicate row is also inserted 【发布时间】:2015-06-10 13:45:25 【问题描述】:大家好,我正在尝试更新订购产品的数量。如果产品已经存在于用户的“购物篮”中而不是插入新行,则应更新包含现有项目的行中的数量。它正在更新,但也插入了一个新行,其中包含应该添加到原始行的数量,如下所示:
我猜我的代码在逻辑上有些问题,但是我没发现。
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);
【讨论】:
干杯,不敢相信我没有发现。谢谢! 发生在我们最好的人身上!【参考方案2】:我这个那个if
你需要摆脱这个项目。添加(我标记了它:
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);
【讨论】:
以上是关于一行列表视图正在更新,但也插入了重复行的主要内容,如果未能解决你的问题,请参考以下文章