检查listview中的重复索引值

时间:2014-09-19 08:54:56

标签: c# listview c#-3.0

我在C#中有columns(ProdcutId,ProductName,UnitPirce,Quantity)的列表视图。我正在从文本框(txtproid,txtproname,txtunitprice,txtquantity)中插入数据。所有这些txtbox都会在按钮单击时插入一次。我想要的是当我点击按钮时,它应该检查listview中的ProductId列。如果它包含来自' txtproid'的值,则不应在listview中添加所有txtbox,而应显示消息"此产品已包含在内#34;。它不应该检查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;
}

1 个答案:

答案 0 :(得分: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);
          }
      }
  }

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

相关问题