1. Anasayfa
  2. Visual Studio C#

Visual Studio C# Örnekleri – Listview Sıralama (Birden Fazla Sütuna Göre)

Visual Studio C# Örnekleri – Listview Sıralama (Birden Fazla Sütuna Göre)
2

listviewsirala

Listview içerisinde görüntülenen bilgileri yukarıdaki örnekte olduğu gibi herhangi bir sütun başlığına basıldığında sıralanmasını istiyorsanız, yani, listview’de tarihe göre, sayıya ve harf sırasına göre yeniden bir düzenleme istiyorsanız.
System.Collection.IComparer namesapacesinde bulunan IComparer arayüzünden bir sınıf türeterek hızlı bir şeklide yapabilirsiniz. ListView.Sort metodu ile sıralama işlemini gerçekleştireceğiz. Neyse Konu sonundan uygulamanın çalışan halini indirebilirsiniz. Kodlarımız

  private void Form1_Load(object sender, EventArgs e)
        {
            //listview içeriği dolduruluyor
            listeyidoldur();
        }

        private void listeyidoldur()
        {
            // Elemanlar listview'e ekleniyor
            ListViewItem item1 = new ListViewItem("Ahmet AK");
            item1.SubItems.Add("10/11/2000");
            item1.SubItems.Add("Email@deneme.com");
            item1.SubItems.Add("77");

            ListViewItem item2 = new ListViewItem("Leyla Gül");
            item2.SubItems.Add("12/12/2000");
            item2.SubItems.Add("test@test.com");
            item2.SubItems.Add("60");
            ///http://www.bilisimogretmeni.com/
            ListViewItem item3 = new ListViewItem("Can Canan");
            item3.SubItems.Add("12/01/2001");
            item3.SubItems.Add("demo@memo.net");
            item3.SubItems.Add("66");

            ListViewItem item4 = new ListViewItem("Sevda Dağcı");
            item4.SubItems.Add("05/30/1999");
            item4.SubItems.Add("dagci@dagci.com");
            item4.SubItems.Add("85");

            listviewsirala.Items.AddRange(new ListViewItem[] { item1, item2, item3, item4 });

        }

        private void listviewsirala_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            sirala sira = listviewsirala.ListViewItemSorter as sirala;

            if (sira == null)
            {
                sira = new sirala(e.Column);
                sira.Order = SortOrder.Ascending;
                listviewsirala.ListViewItemSorter = sira;
            }

            if (e.Column == sira.Column)
            {
                ///http://www.bilisimogretmeni.com/
                if (sira.Order == SortOrder.Ascending)
                    sira.Order = SortOrder.Descending;
                else
                    sira.Order = SortOrder.Ascending;
            }
            else
            {

                sira.Column = e.Column;
                sira.Order = SortOrder.Ascending;
            }///http://www.bilisimogretmeni.com/
            listviewsirala.Sort();
        }

Sırala Sınıfımızın kodları..

public class sirala : IComparer
    {

        public int Column { get; set; }
        //sıralama
        public SortOrder Order { get; set; }
        public sirala(int colIndex)
        {
            Column = colIndex;
            Order = SortOrder.None;

        }
        public int Compare(object a, object b)
        {
            int result;

            ListViewItem itemA = a as ListViewItem;
            ListViewItem itemB = b as ListViewItem;
            if (itemA == null && itemB == null)
                result = 0;
            else if (itemA == null)
                result = -1;
            else if (itemB == null)
                result = 1;

            if (itemA == itemB)
                result = 0;
            ///http://www.bilisimogretmeni.com/
            // tarihler karşılaştırılıyor
            DateTime x1, y1;

            if (!DateTime.TryParse(itemA.SubItems[Column].Text, out x1))
                x1 = DateTime.MinValue;
            if (!DateTime.TryParse(itemB.SubItems[Column].Text, out y1))
                y1 = DateTime.MinValue;
            result = DateTime.Compare(x1, y1);

            if (x1 != DateTime.MinValue && y1 != DateTime.MinValue)
                goto done;
            ///http://www.bilisimogretmeni.com/
            //sayılar karşılaştırılıyor
            decimal x2, y2;
            if (!Decimal.TryParse(itemA.SubItems[Column].Text, out x2))
                x2 = Decimal.MinValue;
            if (!Decimal.TryParse(itemB.SubItems[Column].Text, out y2))
                y2 = Decimal.MinValue;
            result = Decimal.Compare(x2, y2);

            if (x2 != Decimal.MinValue && y2 != Decimal.MinValue)
                goto done;
            ///http://www.bilisimogretmeni.com/
            //alfabetik sıralama
            result = String.Compare(itemA.SubItems[Column].Text, itemB.SubItems[Column].Text);
            done:

            if (Order == SortOrder.Descending)

                result *= -1;
            return result;

        }
    }

İndir “Listview Sıralama (Birden Fazla Sütuna Göre)”

listviewsiralal.zip – 3505 defa indirildi – 53,45 KB
Bu İçeriğe Tepkin Ne Oldu?
  • 3
    ba_ar_l_
    Başarılı
  • 1
    gayet_yi
    Gayet İyi
  • 0
    te_ekk_rler
    Teşekkürler
  • 1
    anlamad_m
    Anlamadım
  • 0
    yetersiz
    Yetersiz
İlginizi Çekebilir
Subscribe
Bildir
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Yorum
Inline Feedbacks
View all comments
Ferhat

Tesekkurler

BilisimOgretmeni

Rica ederim iyi çalışmalar.