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 – 3903 defa indirildi – 53,45 KB
Tesekkurler
Rica ederim iyi çalışmalar.