2014-09-19 67 views
0

我在C#中有一個列表視圖columns(ProdcutId,ProductName,UnitPirce,Quantity)。我從文本框(txtproid,txtproname,txtunitprice,txtquantity)中插入數據。所有這些txtboxes都會在點擊按鈕時插入一次。我想要的是當我點擊按鈕時,它應該檢查列表視圖中的ProductId列。如果它包含來自'txtproid'的值,它不應該在listview中添加所有的txtboxes,而應該顯示一個消息「此產品已包含」。它不應該檢查listv中的整個項目。檢查列表中的重複索引值

我已經嘗試了很多事情,但invain喜歡:

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

你的任務分爲兩個小功能。

首先,檢查重複的產品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); 
      } 
     } 
    } 

我沒有編譯上面的代碼,所以你必須檢查。

相關問題