İlkay İlknur

just a developer...

Silverlight - DataGrid İçerisinde Gruplama

Merhaba Arkadaşlar,

Bu yazımızda Silverlight DataGrid içerisindeki gruplama özelliğinden bahsedeceğiz. DataGrid içerisinde bulunan bu gruplama özelliği ile verilerimizi çok daha anlamlı bir şekilde gruplanmış olarak kullanıcılara gösterebilmekteyiz. Gruplama örneğimizi yapmak için DataGrid içerisinde makalelerin listelendiği bir senaryo düşüneceğiz ve bu Makaleleri kategorilerine göre gruplayacağız. İlk olarak DataGrid içerisinde listeleyeceğimiz Makale sınıfını yaratarak uygulamayı gerçekleştirmeye başlayacağız.

public class Makale
{
   public string Baslik { get; set; }
   public string Kategori { get; set; }
}

Daha sonra ise sahneye basit bir DataGrid ekleyeceğiz. XAML tarafında herhangi bir ayar yapmayacağız. Sadece isim vermemiz şuan için yeterli.

<sdk:DataGrid x:Name="dgMakaleler" Height="156" Margin="12,12,0,0"  VerticalAlignment="Top" HorizontalAlignment="Left" Width="388" /> DataGrid içerisinde gruplamayı sağlamak için System.Windows.Data namespace'i altında bulunan PagedCollectionView tipinden yararlanacağız. Ancak bu sefer DataGrid'in ItemsSource propertysine doğrudan kendi koleksiyonumuzu vermek yerine yarattığımız PagedCollectionView nesnemizi veriyor olacağız. Tabi ki önceden yarattığımız koleksiyonu PagedCollectionView'a geçirip ve gerekli gruplamaları tanımladıktan sonra bu işlemi yapıyor olacağız.
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
   List<Makale> makaleler = new List<Makale>()
   {
      new Makale()
      {
         Baslik="Dinamik Yenilikler",Kategori="C# 4.0"
      },
      new Makale()
      {
         Baslik="Silverlight 4.0 RC",Kategori="Silverlight"
      },
      new Makale()
      {
         Baslik="Expander Kontrolü",Kategori="Silverlight"
      },
      new Makale()
      {
         Baslik="Optional and Named Parameters",Kategori="C# 4.0"
      }
   };
   PagedCollectionView pcw = new PagedCollectionView(makaleler);
   pcw.GroupDescriptions.Add(new PropertyGroupDescription("Kategori"));
   dgMakaleler.ItemsSource = pcw;
}
Gördüğümüz gibi PagedCollectionView'ın GroupDescriptions koleksiyonu içerisine bir PropertyGroupDescription ekledik ve Kategori propertysine göre listeleme yapacağımızı belirttik. Şimdi uygulamayı çalıştıralım ve DataGrid'in görünümüne bakalım. Evet ! Makaleler kategorilerine göre gruplanmış durumda. Tabi ki burada akla şu soru geliyor sadece tek bir propertye göre mi gruplayabiliyoruz  ? Hayır, GroupDescriptions koleksiyonu içerisine istediğiniz kadar property yazabilirsiniz. Böylece adete DataGrid içerisinde bir ağaç varmış gibi bir görünüm elde edebilirsiniz. Tabi bu kadar fazla propertye göre gruplama yapmak performansı biraz düşürecektir. ancak özellikle bu gruplama özelliğinin iş uygulamalarında oldukça faydalı olduğunu söyleyebilirim. Görüşmek Üzere,


Yorum Gönder