如何遍历列表视图列

时间:2012-04-23 21:33:41

标签: c#

如何遍历列表视图列,以便我们可以检查列表视图列中的项是否已存在,如果存在,则更改项。

例如我有一个列表视图(数量和项目),我想检查列表视图中是否已经存在新添加的项目,然后只将数量更改为数量++,而不是添加新项目。

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);

所有值都来自数据库。

2 个答案:

答案 0 :(得分: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个或更多值来创建名称。

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

    }