Daha önce paylaştığım yazılarımda genel olarak problem çıkardığında kaynak bulmanın zor olabileceği konuları hedef aldım. Bu yazımda sizlere direkt olarak bir çözüm sunmayı istiyorum. ASP.NET MVC ile uygulama geliştirenler tablolarında sayfalandırma yapmak için genelde PagedList paketini kullanırlar. Ancak bu senkron bir çözümdür ve sayfalarda dolaşmak için bütün sayfaların tekrar tekrar yüklenmelerini gerektirir. Bu durumda JQuery’nin sağladığı hazır ajax fonksiyonları imdadımıza yetişir. Peki PagedList ile gelen veriyi JQuery ile nasıl sayfama yazdırırım.
tarzında bir controller’dan sorguyu çekmek için :
gibi bir javascript kodu işinizi görecektir. Ancak bu çözüm sayfamızdaki html tasarımında değişiklikler yaptığımızda bizlere problem çıkarmaktadır. Tasarımı temiz tutmak için knockoutjs kütüphanesini kullanacağız.
Yapılabilecek en basit örneği sizlere sunmak istiyorum. Öncelikte hâlihazırda oluşturduğumuz ASP.NET projemizde ‘Models’ klasörüne dosyaadı ‘Person.cs’ isminde bir sınıf ekleyelim. Eklediğimiz sınıf aşağıdaki gibi olsun:
‘Controllers’ dizini altındaki HomeController.cs dosyasına aşağıdaki kodu ekliyoruz:
Burada dikkatinizi çekmek istediğim nokta nesneleri Json ile parse ederken item adı altında bir liste ve metaData adı altında PagedList’in sayfa numarası, sayfa sayısı gibi bilgilerini barındıran bir anonim nesne oluşturduk.
Şimdi bize gereken bize gönderilen bu JSON verisini HTML sayfamıza bağlamak. Bunun için öncelikle View’ımıza aşağıdaki tabloyu ekliyoruz.
Pager.js isimli bir js dosyası oluşturup içine aşağıdaki kodu ekleyin.
ve HTML kodumuzun başına :
kodunu eklersek sayfamızda sayfalandırılabilir tablo kullanılabilir. Aynı kodu isteğiniz sayfada kullanabilirsiniz GetList aksiyonunda kullandığımız kalıbı kullanmak kaydıyla.
JSON ile gelen verilerin çeşitliliğine göre tbody de değişiklik yapabilirsiniz. Temel mantığı anladığınızı umuyorum.
Artık tek satırlık bir javascript kodu ile web sayfalarınızda sayfalandırma yapabilirsiniz. Bir sonraki yazımda görüşmek üzere hoşçakalın.