Merhaba arkadaşlar,
Bugün sizlere verileri sayfalama olayını MVC ile nasıl yapabiliriz anlatmaya çalışacağım.
Verileri listelediğiniz bir sayfada tüm verileri göstermek yerine belirli sayıda verileri gösterip, 1-2-3-4 şeklinde sayfa numarası atarak gösterme işlemidir kendileri.
Misal 150 adet kayıt var elinizde, listelediğiniz sayfada 150’sini birden değilde 20’şer 20’şer göstermek istiyorsanız paging mantığı burada devreye giriyor.
Aşağıda ki resimde örnek gösterilmiştir.
Bu işlemi yapmak için adım adım uygulayın :
1- Package Manager Console açın ve aşağıda ki kütüphaneyi yükleyin;
Install-Package PagedList.Mvc
2-
Controller :
Kullanacağımız Controller’de using olarak ekleyelim:
using PagedList;
Ben örnek olarak şöyle bir model kullandım;
public class PersonInfo { public int Id { get; set; } public string Name { get; set; } public string Surname { get; set; } }
İlgili Controller
Listeleme yapacağımız yerde 2 parametre tanımlıyoruz page ve pageSize;
page = 1.Sayfadan başlıyacak;
pageSize = 1 Sayfada 5 kayıt gösterecek.
Yani pageSize = 10 yaparsanız 1 sayfada 10 kayıt gösterilir.
public ActionResult Index(int page = 1, int pageSize = 5) { List<PersonInfo> personList = new List<PersonInfo>(); for (int i = 0; i <= 15; i++) { PersonInfo newPerson = new PersonInfo(); newPerson.Id = i; newPerson.Name = "Test Person Name -" + i; newPerson.Surname = "Test Person Surname - " + i; personList.Add(newPerson); } //PersonIfo = Kullandığım model. //PersonListe = kayıtlarımın tutulduğu liste. PagedList<PersonInfo> personModel = new PagedList<PersonInfo>(personList, page, pageSize); return View(personModel); }
3-
View’ın ayarlanması
İlk 2 satır olmazsa olmazımız. Verileri IPagedList ile model’e çekiyoruz.
PagedList.Mvc kullanacağımızı belirtiyoruz.
@model PagedList.IPagedList<MvcPagingTest.Models.PersonInfo> @using PagedList.Mvc; @{ ViewBag.Title = "PersonInfo"; } <h2>PersonInfo</h2> <table class="table"> <tr> <th> @Html.DisplayName("Id") </th> <th> @Html.DisplayName("Name") </th> <th> @Html.DisplayName("SurName") </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Id) </td> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.Surname) </td> </tr> } </table> @* 1-2-3-4 sayfa numaralarının çıkartıldığı kısımdır. *@ @* PersonInfo yazan kısım action methodumuzun adıdır. *@ @Html.PagedListPager(Model, page => Url.Action("PersonInfo", new { page, pageSize = Model.PageSize })) Toplam @Model.TotalItemCount kayıt bulundu. Bu sayfada @Model.FirstItemOnPage ile @Model.LastItemOnPage arası kayıtlar gösteriliyor.
Evet arkadaşlar işlemler bu kadar. Benim ekran görüntüm;
Örnek projeyi burada bulabilirsiniz : MvcPagingTest
Yararlı olabilecek kaynaklar;
https://www.youtube.com/watch?v=5omEuuIIFcg
http://demo.taiga.nl/mvcpaging/
İyi çalışmalar.