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

  • Ferhat

    Tesekkurler

    • BilisimOgretmeni

      Rica ederim iyi çalışmalar.

X

Pin It on Pinterest

X