2014-09-19 2 views
0

C에서 listview가 columns(ProdcutId,ProductName,UnitPirce,Quantity)입니다. (txtproid,txtproname,txtunitprice,txtquantity) 텍스트 상자에 데이터를 삽입합니다. 이러한 모든 txtbox는 버튼 클릭시 한 번만 삽입됩니다. 여기서 내가 원하는 것은 버튼을 클릭하면 listview의 ProductId 열을 확인해야합니다. 'txtproid'에서 오는 값이 포함되어 있으면 listview에 모든 txtbox를 추가해서는 안되며 대신 "This Product is Already Included"라는 메시지가 표시되어야합니다. listv의 전체 항목을 검사하면 안됩니다.listveiw에서 중복 색인 값 확인

나는 많은 것들을 시도했지만 같은 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를 확인합니다., 두 번째의 ListView에 데이터를 삽입 (의이 CheckSameProductId()을 가정 해 봅시다).

그래서, 아래에게 형태가 될 수있다 (의이 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); 
      } 
     } 
    } 

위 코드를 컴파일하지 않았으므로이를 확인해야합니다.