Asp.Net Mvc Sayfalama Filitreleme Arama İşlemleri

6 yorum
Merhaba Arkadaşlar ,

            Bu uygulamamızda asp.net mvc üzerinde sayfalama ve arama işlemlerine bakıyor olacağız.Yazacağımız uygulamamızda Northwind veri tabanını kullanıyor olacağız.Vermiş olduğum linden indirebilirsiniz.

Projemizde PagedList ve PagedList.Mvc 'yi kullanıp Ajax.Beginform' la sayfalama ve arama işlemlerimizi gerçekleştiriyor olacağız.Bunun için bir MVC4 projesi açalım ve proje ismini sayfalama verdikden  sonra template olarak Basic ve ViewEngine olarak razor secelim.Projemiz açıldığında controller klasörü ne sağ tık add controller diyip Home controllerimizi ekleyelim.Daha sonra gene controller klasörümüze sağ tıklayıp Customer controllerimızı ekleyelim.Birde listeleme modelleme işlemlerimiz için proje üzerine sağ tıklayıp ViewModel isminde bir klasör ekleyelim .ViewModel klasörümüze sağ tıklayıp iki adet class ekleyip birincisinin adı CustomerListModel diğeri ise CustomerModel olarak açalım.Birde model klasörümüze sağ tıklayıp add diyip new item ile sol tarafta bulunan data sekmesini secip içindeki Ado.Net Entity Framework ü secelim ve baglantı işlemlerini tamamlayıp veri tabanındaki var olan tabloların modellenmesini sağlayalım.

ViewModel Klasörü içindeki Yapı Aşağıdaki Resim 1 ve Resim 2 deki gibidir.
Resim1
 Proje içinde sayfalama işlemlerinin ve arama işlemlerine göre view model klasorü içindeki classlardan faydalanıyor olacağız.Bu noktada namespace uzağına eklenen using PagedList;
using PagedList.Mvc; inin çalışması için http://www.nuget.org/ adresine gidip search bölümünden PagedList yazıp aşağıda verilen bölümü kopyalıyoruz.Daha sonra acalım Tools --> Nuget Package Manager-->Package Manager Console
Resim 3 Nuget.org
Resim 2











Resim 4 Package manager Console açma
Daha Sonra package manager console nugget org adresinden almış olduğumuz kodu yapıştırıp entere basalım.Böylelikle references bölümünde
PagedList ve PagedList.Mvc refere edilsin.

Daha sonra Customer controllemuzun index methodunda tüm işlemlerimizi gerçekleştirebilmek adına ki bunlar sayafanın ilk açılması yada sayfasının bir ajax sayfa isteği olup olmadığının kontrol aşamalarıdır.Bunuda Request.IsAjaxRequest() ile yapacağız index actionresultımız aşağıdaki gibidir.

public ActionResult Index(CustomerModel model)
        {
            int pageindex = model.Page ?? 1;//sayfa ilk açıldığında boşsa 1den başlasın
            NorthwindEntities db = new NorthwindEntities();
            model.Customer = (from mus in db.Customers.Where(m => (String.IsNullOrEmpty(model.City) || m.City.Contains(model.City)) &&                            (String.IsNullOrEmpty(model.CompanyName) || m.CompanyName.Contains(model.CompanyName))
                                  ).OrderByDescending(m => m.CustomerID)
                              select new CustomerListModel
                              {
                                  City = mus.City,
                                  CompanyName = mus.CompanyName,
                                  Country = mus.Country
                              }).ToPagedList(pageindex, 10);

            if (Request.IsAjaxRequest())//Sayfa ajax isteğimi
            {
                return PartialView("_Customers", model);
            }
            else
            {
                return View(model);
            }
        }

index.cshtml imiz yapısı ağıdaki  gibidir
 @model  MvcSayfalamaListeleme.ViewModel.CustomerModel  sayfaya yönlendirdiğim modeldir                   











Sayfa içersinde ilkkez mi açıldı yada bir ajax talebimi oldu noktasında ise yukarda yazmış olduğum index ActionResult içindeki partial viewımızı döneceğiz._Customers partial viewmizin yapısı aşağıdaki gibidir.












Uygulamanın daha iyi anlaşılması örnek proje 

Umarım faydalı olur.Zamanım olursa video anlatım olarak uygulamayı yazıyor olacağım .






6 yorum :

  1. Merhabalar. Dediğiniz gibi yaptım ancak Localde çalışan kodlama sunucuya yüklendiğinde sadece pagedlist kısmında hata veriyor. Kodları kontrol ettiğimde sorun göremedim. Acaba sunucu kaynaklı mı diye düşünüyorum. Daha önce böyle bir hata ile karşılaştınız mı acaba?
    http://serhatekici.com.tr/Home/Blog

    YanıtlaSil
    Yanıtlar
    1. Merhaba dil_lenci oncelikle ayni edmx uzantili veri tabani baglanti cumlesi uzerindemi islem yapiyorsunuz bunu kontrol edin daha sonrasinda referanslar bolumunde framewok referanslarini kontrol edin ornegin EF 7.0 yada 6.1.13 mu refere edilmis buna bakin

      Sil
  2. Hata devam ediyorsa eger edmx in baglanti xml dosya icerigi duzeltme bolumu icin bu linkden yardim alabilirsiniz http://erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html?m=1

    YanıtlaSil
    Yanıtlar
    1. Bağlantı cümlesi edmx uzantılı. Eğer ondan kaynaklı bir hata olsaydı local de de aynı hatayı almam gerekiyordu diye düşünüyorum. Sizin de söylediğiniz gibi sunucu kaynaklı bir problem var. Host firmasına yazdım ancak yardımcı olabilirler mi bilmiyorum. Linkte belirtmiş olduğunuz çözüme bakayım. Durumdan haberdar edeyim sizi. İlginiz için teşekkürler

      Sil
  3. Frameworkden kaynakli gibi duruyor

    YanıtlaSil
  4. Merhabalar. Dün akşamdan beridir uğraşıyorum. Farklı projeler de denedim. Şöyle ki codefirst kullandığımda çalışıyor. db first kullandığımda ise ne yazık ki çalışmıyor. EDMX düzenlemesini de denedim ama yine aynı hatayı alıyorum. Diğer seçenekleri araştırayım :)
    İlginiz için teşekkür ederim.

    YanıtlaSil

Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.