2016-12-21 5 views
0

ListViewコントローラからの重複したエントリを列テキストで防ぐ必要があります。重複が見つかった場合は、さらに処理するためにListView Itemを取得する必要があります。私はみんなが言うのを見た。c#列テキストによるリストビューの重複を防ぐ方法

ListViewItem item = ListView3.FindItemWithText("test"); 
if (!listView1.Items.ContainsKey(txt)) 
{ 
    // doesn't exist, add it 
} 

どのように指さすことができますかColumn text ?? arrayにIDを追加し、array value existsのチェックの後に重複を防止しました。その場合はentryが重複しています。

これは私のコードです。

rd = cmd.ExecuteReader(); 

// Validation not working - duplicating ListviewItems 
while (rd.Read()) { 
    ListViewItem lvvi = new ListViewItem(rd.GetString(0)); 
    lvvi.SubItems.Add(rd.GetString(1)); 
    lvvi.SubItems.Add(rd.GetString(5)); 
    lvvi.SubItems.Add("1"); 
    lvvi.SubItems.Add(rd.GetString(0)); 

    int listViewItemID; 

    int[] ids; 
    ids = new int[100]; 
    if (listView3.Items.Count > 0) 
    { 
     int addingItemID; 
     //ADD ListView ids into array 
     int i=0; 
     foreach (ListViewItem li in listView3.Items) 
     { 
      listViewItemID = Int32.Parse(li.SubItems[0].Text); 
      addingItemID = Int32.Parse(rd.GetString(0)); 
      ids[i] = listViewItemID; 
      i++; 
     } 

     //Check item allready exsist 
     if (ids.Contains(Int32.Parse(rd.GetString(0)))) 
     { 

      MessageBox.Show("sdsd"); 
     } 
     else { 
      listView3.Items.Add(lvvi); 
     } 



    } 
    else { 

     listView3.Items.Add(lvvi); 
    } 



} 

//Calculate Price summery 
this.calculatePrice(); 
+0

あなたはLINQのを使用することができれば、これは役立つかもしれない:http://stackoverflow.com/questions/ 489258/linqs-distinct-on-a-particular-property – ADyson

答えて

0

すべてのIDを取得するためにループする代わりに、アイテムをループするか、linqを使用して特定のIDを見つけて結果を保持することができます。これは、外部関数またはループを備えたidの部分を置き換えることによって、またはFirstOrDefaultのようなものを使用して行うことができます。

addingItemID = rd.GetString(0); 
ListViewItem existing = listView3.Items.Cast<ListViewItem>().FirstOrDefault(li => li.SubItems[0].Text == addingItemID); //(not sure if the cast is needed) 

if (existing != null) 
{ 
    //item exists, variable existing refers to the item 
    MessageBox.Show("sdsd"); 
} 
else 
{ 
    listView3.Items.Add(lvvi); 
} 
関連する問題