Vb.net Listview İle Hızlı Listeleme | Listview Virtual Mode

Mayıs 9, 2010 | | 5 Yorum yapılmış

Vb.net üzerinde listeleme yaparken sık sık kullandığım nesne listview nesnesidir.  Genelde veritabanı ile çalıştığımdan, bana kullanışlı geliyor. Belki Datagird nesnesi daha az komutla daha çok şey başarıyor olabilir fakat datagrid nesnesine bir türlü alışamadım. Neticede büyük listeler alırken ( 20.000 – 30.000 satır gibi) her ikisi de yavaş kalıyor.

Listview nesnesinin virtual mode denilen özelliği ise beni mesh ediyor. 100 000 satırı saniyeler içerisinde listeleyebiliyor. Aslında tümünü bir kerede listelemiyor. Bir listview oluşturup, boyutlarını ayarladığınızda ekranda gözüken kaç satır varsa sadece onları listeye alıyor. Siz listeyi aşağı ya da yukarı kaydırdığınızda karşılığındaki satırları listeye eklediği için çok hızlı bir görünüm veriyor ve oldukça işlevsel bir özellik kazandırıyor.

Listview nesnesinin özelliklerinden VirtualMode özelliğini True yaptıktan sonra bir kaç kod ile 1 milyon satırı 1 saniye içerisinde listede görebilirsiniz :) Normalde 1 milyon satırlık bir döngü kaç saniye sürer :)

VirtualMode özelliğinde çalışırken öncelikle listview’de kaç satırlık veri olacağını belirtmemiz gerekiyor. Listview ‘e o kadar sanal satır ekleniyor ve satırlar arasında dolaşırken listview RetrieveVirtualItem olayı ekranda gözüken satır sayısı kadar döngüye giriyor ve e.itemindex değişkeni ile bize ekrandaki satırların kaçıncı sırada olduğunu veriyor. Biz de bu verilerden yararlanarak listeye veri ekliyoruz.

Normalde 10.000.000 satırlık veriyi listeye eklemek için şöyle bir kod yazmamız gerekecekti ve geçecek süreyi hiç düşünemiyorum :)

Dim i as integer=0
Dim list As ListViewItem
For i=0 to 1o000000
list = listview1.items.add(“Satır : ” & i)
list.subitems.add(“Sütün 2 ” &  i )
Next

Forma eklediğimiz listview nesnesinin virtual mode özelliğini true yaparak 10 milyon satırı nasıl listediğini inceleyelim;
listview, vb.net, virtual mode
Sadece bir butona ya da listeleyi başlatmak istediğimiz yere kaç satır olacağını belirtmemiz gerekiyor.

ListView1.VirtualListSize = 10000000

Daha sonra satırlar arasında dolaşırken değiştiğini söylediğimiz RetrieveVirtualItem olayına ise şu kodlarla satırlarımızı ekleyelim.

Private Sub listView1_RetrieveVirtualItem(ByVal sender As Object, ByVal e As RetrieveVirtualItemEventArgs) Handles ListView1.RetrieveVirtualItem
e.Item = New ListViewItem(“Sütun 1 Satır Numarası: ”  & FormatNumber(e.ItemIndex))
e.Item.SubItems.Add(“Sütun 2 Satır Numarası: ”  & e.ItemIndex)
e.Item.SubItems.Add(“Sütun 3 Satır Numarası: ”  & e.ItemIndex)

End Sub

Umarım bu listeleme yöntemi işinize yarar. Örnek kodlardan bir çok uygulama geliştirilebilir.

Örnek dosyayı aşağıdaki adresten indirebilirsiniz…
http://blog.gazanya.com/wp-content/uploads/2010/05/virtual-deneme.zip

.

Bu Yazıları Okumak Yürek İster:

  • Hayat Bilmecesi
  • Pardus
  • Toshiba G900 ile AVEA 3G Testi
  • Apache Üzerinde Farklı Domain Barındırmak
  • İNSAN YAPIMI UÇAN DAİRELER | UFOLAR
  • Comments (5)

     

    1. E.Murat ÜNAL diyor ki:

      sen bir ara bana bir çay ısmarla da ben sana devexpress grid ile neler yapabileceğini bir göstereyim, bir daha dönüp listview e bakmayacaksın bile emin ol :)

    2. Mehmet diyor ki:

      Evet abi, uzun zamandır görüşemiyoruz. Açık havada bir çay iyi gider.

    3. veysel diyor ki:

      merhabalar hocam bunun c# ile yapılmış bir örneği mevcut mu ?

    4. veyseloglu diyor ki:

      hocam bilgi için sağ olun fakat pek işime yaramadı :)

    5. Levent Yıkılmaz diyor ki:

      Paylaşımınızı keyifle okudum, yararlı bilgiler, teşekkür ederim.

    Leave a Reply

    CAPTCHA (Şahıs Denetim Kodu) Resmi