25 Ocak 2016 Pazartesi

MVC Angular Kullanımı : Listeleme, Filtre ve Sıralama İşlemleri

Daha önceki angular yazımda sizlere listeleme, filtreleme ve sıralama işlemlerini yazacağımı söylemiştim. Gün bugündür diyerek yazımı yazmaya başlıyorum :)

Bir önceki yazımda tek bir nesne üzerinden işlem gerçekleştirmiştim. Artık birden çok veriyle çalışmamızın zamanı geldi. Bunun için daha önceki yazımda kullandığım gibi yine bir Personel sınıfı kullanacağım.

personel class











İlk olarak mvc de her zaman olduğu gibi kullanacağımız bir ActionResult oluşturalım. Ben Indexi oluşturmuşum. Birde JSON döndüreceğimiz bir JsonResult metodu yazalım.

jsonresult method















Indeximizde bir şey yok içinde sadece return View(); metodu olacak. Artık View tarafına ve angular yazmaya başlayabiliriz :)

Angular kütüphanemizi hemen View'imize ekleyelim.

angular



Ben Jquery get metodunu kullandığım için bana birde Jquery kütüphanesi lazım.

jquery


Artık Angular tarafını büyük bir mutlulukla yazabiliriz :)

Adım adım gidelim;
- Birinci adımda listemizi sayfada gösterelim. Bunun için Jquery get metoduyla GetPersonels metodumu çağıracağım ve gelen JSON'ı $scope'a set edeceğim.

angular script












Bu işlemin çalışması (tetiklenmesi için) Controller ve app nesnelerini kullanmamız lazım. Body kısmında listemizi oluşturarak tetiklemeyi sağlayalım.

controller













ng-repeat attribut'uyle personels içindeki her bir personel (bu ismi biz veriyoruz yani : p in personels de diyebilirdik o zaman altta p. ID şeklinde çağırmalıydık) için değerleri textboxlarımıza ng-Model ile set ediyoruz. Eğer bu değerleri text olarak göstermek isteseydik {{personel.ID }} örneğindeki gibi yazabilirdik.

Listeleme işlemi bitti diyebiliriz.

-İkinci adımda bu listemize filtreleme işlemi ekleyelim.
Bunun için ng-controller div'imizin altına filtreleme yapacağımız textbox'ı ekleyelim. Ayrı listemize de filtreleme yapacağımız değeri bildirmemiz gerek.

filter







Filtre alanımızı oluşturduktan sonra sıra geldi listemize bu alanı bildirmeye. Bunun için ng-repeat attribute'nin yanın filter keyword'ü ile alanı bildiriyoruz.

body filter




Ben Name, Surname ve Title işlemlerinin hepsi için bu filtreyi ekledim.

body




















Bakalım ekranımızın son halini ne olmuş.

page1






Güzellll :) Sırada sıralama işlemi var. Bunun için iki farklı adım izleyeceğiz. Bir tanesi static bir sıralama olacak yani bize elle vereceğiz sıralama kriterini. İkinci işlemde ise dinamik olarak butonlar üzerinden yapacağız.

- Üçüncü adımda listemizi istediğimiz alana göre static bir şekilde sıralıyoruz. Bunun için "orderBy" keyword'ünü kullanacağız.

multi filter


page2


Peki biz burada örnek olarak isim alanını kullandığım için tersten sıralamak istersek ne yapacağız. Çok basit 'Name' alanının başına "-" işareti koyarak bu işlemi gerçekleştirebiliriz.
(Ör: orderBy:'-Name')

descending












Artık bu işlemi dinamik yani butonlara basınca yapılacak şekilde yapma zamanımız geldi.

- Dördüncü adım butonlar ile alan sıralaması yapma işlemi

Bu işlemlere kadar angular kısmında sadece verimizi çekmiştik. Artık orayı biraz geliştirme zamanı geldi. İlk olarak filter nesnesini kendimiz özelleştireceğiz ve içeride orderBy fonksiyonunu yazacağız.

dyanmic orderBy

Sarı ile işaretlediğim yerler yeni eklenen alanlarımız. Burada order adında yeni bir fonksiyon oluşturduk. İçine predicate yani sıralama yapılacak alan adını göndereceğiz (Name,Surname gibi). Reverse ise sıralı ise tersten sıralamasını ya da tam ters işlem için kullanılacak bilgiyi tutuyor. Sonrasında ise personels listesini bu bilgilere göre orderBy işlemi ile oluşturup kendisine set ediyoruz.

Tabiki bu işlemleri tetikleyecek butonlarımızın da olması gerekiyor.

ng-click




Bu işlemle artık orderBy işlemlerimizi order fonksiyonu ile sıralanmasını istediğimiz alan bilgisiyle gerçekleştiriyoruz.

page4


Ohhhhhhh uzun ama faydalı olduğunu düşündüğüm bu yazının da sonuna geldik. Biraz yoruldum sanırım bir çay arası vermeyi hak ettim. Sonra tekrar görüşürüz :)

Hiç yorum yok:

Yorum Gönder