2012-04-23 3 views
0

Как пройти по столбцу вида списка, чтобы мы могли проверить, существует ли элемент в столбце представления списка или нет, и если он существует, то измените элемент.Как перемещаться по столбцу вида списка

например, у меня есть вид списка с (количество и элемент), и я хочу проверить, есть ли недавно добавленный элемент уже в представлении списка, а затем только изменить количество на количество ++, а не добавлять новый элемент.

string[] saLvwItem = new string[4]; 
saLvwItem[0] = a.ToString(); 
saLvwItem[1] = r["ItemNumber"].ToString(); 
saLvwItem[2] = r["ItemName"].ToString(); 
saLvwItem[3] = r["Price"].ToString(); 

ListViewItem lvi = new ListViewItem(saLvwItem); 
listView1.Items.Add(lvi); 

все значения поступают из базы данных.

ответ

0

Если вы пытаетесь соответствовать на ITEMNAME (ColumnIndex = 2) и увеличить ItemNumber (ColumnIndex = 1), то это может работать:

private void InsertOrUpdateItem(ListView listView, string[] saLvwItem) 
    { 
     if (saLvwItem == null || saLvwItem.Length < 4) 
     { 
      return; 
     } 

     bool bFound = false; 
     foreach (ListViewItem lvi in listView.Items) 
     { 
      if (lvi.SubItems[2].Text == saLvwItem[2]) 
      { 
       // item already in list 
       // increase the ItemNumber 
       lvi.SubItems[1].Text = (Convert.ToInt32(lvi.SubItems[1].Text) + Convert.ToInt32(saLvwItem[1])).ToString(); 
       bFound = true; 
       break; 
      }     
     } 

     if (!bFound) 
     { 
      // item not found 
      // create new item 
      ListViewItem newItem = new ListViewItem(saLvwItem); 
      listView.Items.Add(newItem); 
     } 

    } 
+0

Этот режим подходит и полезен .... Большое спасибо – alternatefaraz

+0

Это плохая реализация, никто не должен проходить через элементы просмотра списка и устанавливать флаги. К сожалению, эта функция пытается переделать колесо :( –

+0

Но он отлично работает. – alternatefaraz

0

Используйте следующий код,

if(!lvi.ContainsKey(saLvwItem[1])) 
{ 
    ListViewItem lvi = new ListViewItem(saLvwItem[2]); //Or whatever value you want to show as name 
    listView1.Items.Add(lvi); 

} 

ListView имеет установку ключ-значение для каждого элемента, так что вы не можете установить четыре свойства. Ваш ключ должен быть уникальным, и ваше имя должно быть именно тем, что вы хотите отобразить, вы можете создать имя, объединив 2 или более значений.

+0

Он показывает ошибку на ContainsKey – alternatefaraz

+0

говоря ListViewItem не содержит определение ContainsKey – alternatefaraz

+0

Мы говорим об одном контроле? Проверьте и подтвердите, http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.listviewitemcollection.containskey.aspx –

Смежные вопросы