1. Ana Sayfa
  2. Visual Studio C#
  3. 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)

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

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 – 1000 defa indirildi – 53 KB

Yorum Yap