Listview’i çok severiz vesselam. Hele ki veri giriş-çıkış, gösterme işlemlerinde vazgeçilmezlerimiz arasındadır. Görüntüde listview sadece basit bir kontrol gibi gözükür. Ama birçok işimizi listview yardımı ile hallede bilmekteyiz. Bu kontrolü daha fazla sakız yapmadan başlıkta belirttiğim meseleye gelelim.
Mevzumuz şu; herhangi bir yerden listviewe girilen aynı isimdeki değerleri farklı satıra yazdırmadan mevcut satır üzerine yazdırmak. Örnekle açıklayacak olursak, stok takip programında listview üzerinden stoklarını tuttuğumuz ürünler için, aynı üründen eklediğimizde o ürünün sadece miktarını, adetini veya fiyatının üzerine ekleyerek yazdırmak. Bir nevi aynı isimdeki şeylerin rakamsal değerlerini toplayarak tek satırda birleştirmek.
Senaryo veya örnek aklınızda biraz canlandı ise ufak bir örnek ile pekiştirebiliriz. Resimde görüldüğü gibi 2 textbox bir buton ve birde baş rolümüz olan listview kontrolünü forma sürükleyin. Textbox’un biri eklenenin adı, diğerinde ise eklenenin miktarı girişi yapılmakta. Kendi kendinize ben hazırım diyorsanız butona çift tıklayıp kodlamaya geçe biliriz.
[cc lang=”c#”]
private void button1_Click(object sender, EventArgs e)
{
string adi = txtadi.Text;
int miktar = int.Parse(txtmiktar.Text);
bool varmi=false;
foreach (ListViewItem item in listView1.Items)
{
if (item.Text == adi)
{
varmi = true;
}
}
if (varmi)
{
foreach (ListViewItem i in listView1.Items)
{
if (i.Text == adi)
{
int icindeki = int.Parse(i.SubItems[1].Text);
icindeki += miktar;
i.SubItems[1].Text = Convert.ToString(icindeki);
}
}
}
else
{
ListViewItem lv = new ListViewItem();
lv.Text = adi.ToString();
lv.SubItems.Add(miktar.ToString());
listView1.Items.Add(lv);
}
}
[/cc]
Görüldüğü üzere ilk olarak textbox ları doğru bir şekilde değişkenlere atadık. Ardından programın kilit kodu olan bool tipli değişkeni false olarak tanımladık. Bunu yaptıktan sonra foreach ile girilmek istenenin adını listView1 kontrolünün içinde arattık. Eğer içinde varsa önceden false olarak tanımladığımız varmi değişkenine true değerini atadık.
Akabinde bu atanan true değeri ile if-else kullanarak tekrar listView1 içinde aynı isimdeki girdinin miktarı üzerine girilen miktarı topladık. Eğer daha önce aynı isimde girdi girilmemiş ise listView1’e yeni satır isim ve miktarı ile ekledik…