检查列表中重复的索引值

本文关键字:索引值 列表 检查 | 更新日期: 2023-09-27 18:23:45

我在C#中有一个带有columns(ProdcutId,ProductName,UnitPirce,Quantity)的列表视图。我正在从文本框(txtproid,txtproname,txtunitprice,txtquantity)中插入数据。单击按钮即可插入所有这些txtboxes。我想要的是,当我单击按钮时,它应该检查listview中的ProductId列。如果它包含来自"txtproid"的值,则不应在listview中添加所有txtboxes,而应显示消息"This Product is Already Included"。它不应该检查listv中的整个项目。

我尝试了很多东西,但都失败了,比如:

int c = 0;
if (listView1.Items.Count != 0)
{
     foreach (ListViewItem lv in listView1.Items)
    {
        c = 0;
        if (lv.SubItems[0].Text == cmbpid.SelectedItem.ToString())
        {
            Validations.ErrorMessage("Item already exists in the Cart");
            c = 1;
        }
    }
}
else if (c == 0)
{
    ListViewItem lvi = new ListViewItem(cmbpid.Text);
    lvi.SubItems.Add(cmbpname.Text);
    lvi.SubItems.Add(txtunitprice.Text);
    lvi.SubItems.Add(txtproquantity.Text);
    lvi.SubItems.Add(txtunittotal.Text);
    lvi.SubItems.Add(txtbatch.Text);
    listView1.Items.Add(lvi);
    //clear fields
    quvar = 0;
    totalvar = 0;
    txtproquantity.Clear();
    txtunitprice.Clear();
    txtunittotal.Clear();
    GetListviewTotal();
    txtbatch.Clear();
    cmbpid.SelectedIndex = -1;
    cmbpname.SelectedIndex = -1;
}

检查列表中重复的索引值

您的任务分为两个小函数。

首先,检查重复的产品id(比如CheckSameProductId())其次,将数据插入ListView。(比方说InsertProductData()

所以,下面的表格可以是。

if (CheckDuplicateId())
{
    //show error text
}
else
{
    //insert text boxes's data to List View
    InsertProductData();
}

然后,例如,每个函数都可以写入。

 //check whether it's already inserted
  bool CheckDuplicateId()
  {
      foreach (ListViewItem lv in listView1.Items)
      {
          if (lv.SubItems[0].Text == cmbpid.SelectedItem.ToString())
          {
              //there is a duplicate data
              return true;
          }
      }
      //there is no duplicate data
      return false;
  }
  //insert data using text boxes to listview ctrl
  void InsertProductData()
  {
      foreach (Control x in this.Controls)
      {
          if (x is TextBox)
          {
              //I'm not sure your control z-order
              lvi.SubItems.Add(((TextBox)x).Text);
          }
      }
  }

我还没有编译上面的代码,所以你必须检查一下。