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

すべての値はデータベースから取得されます。

4

2 に答える 2

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

    }
于 2012-04-23T22:12:12.147 に答える
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 ではすべての項目にキーと値の設定があるため、4 つのプロパティを設定することはできません。キーは一意である必要があり、名前は表示したいものとまったく同じである必要があります。2 つ以上の値を連結して名前を作成できます。

于 2012-04-23T21:40:21.417 に答える