Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET MVC 4.0 WebGrid Nesnesi

Asp.NET Web Form mimarisinde hem görünürlük açısından hem de işlevsellik açısından en iyi veri görüntüleme kontrollerinden birisi GridView kontrolüdür.Lakin mevzu Asp.NET MVC mimarisine gelince işin rengi değişiyor.MVC’yi ilk öğrenme aşamasında, veri görüntüleme yolu prosedürel programlamada olduğu gibi döngüler aracılığıyla satırlar oluşturmaktan ibaretti.Haliyle bizim gibi Asp.NET mimarisine alışkın çocuklarda “Ulan MVC !!! GridView’e benzer nesnen yok mu?” düşüncelerle MVC mimarisinin eksik yanını eleştiriyorduk.İşte bu eksik payı Asp.NET MVC 4.0 versiyonuyla gelen WebGrid nesnesi tamamlamaktadır.Artık verilerimizi prosedürel programlama yapmadan bu nesne sayesinde listeleyebilecek ve nesnenin artıları sayesinde sayfalama gibi özelliklerde yapabileceğiz.

WebGrid Nedir?
Eee o kadar anlattık yukarıda.Gerek yok burada teferruata.

Konuya Hazırlık Yapalım
WebGrid nesnesinin her özellik ve metodunu irdelerken örneklendireceğimizden dolayı örneklendirmede kullanacağımız veritabanını şimdiden hazırlamak istiyorum.SQL Server veritabanında “OrnekVeritabani” isminde bir veritabanı ve bu veritabanı içinde “OrnekTablo” isminde bir tablo oluşturalım.

“OrnekTablo” isimli tablomuzun kolonları aşağıdaki gibi olacaktır.
OrnekTablo

“OrnekTablo” isimli tablomuza aşağıdaki gibi üç tane veri girişi yaptım.OrnekTabloVeriGirisi

Son olarak bir MVC projesi oluşturup, Model katmanında bir “Veritabani.dbml” isminde dosyamızı oluşturup, Entitylerimizin oluşmasını sağlıyoruz.

“Home(Controller).cs” isimli Controller sınıfındaki kodlarımız aşağıdaki gibi olacaktır.

    public class HomeController : Controller
    {
        VeritabaniDataContext Veri = new VeritabaniDataContext();

        public ActionResult Index()
        {
            List<OrnekTablo> TumVeriler = Veri.OrnekTablos.ToList();
            if (TumVeriler != null && TumVeriler.Count > 0)
            {
                return View(TumVeriler);
            }
            else
            {
                return View();
            }
        }
    }

Özellik ve Metodları

GetHtml = WebGrid sayesinde verilerimizi en sade şekilde görüntülemeye yarar.
Örnek olarak aşağıdaki kodları inceleyiniz.
Index Action’ının View katmanındaki görüntüsü isi aşağıdaki gibi olacaktır,

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model);
    @Tablo.GetHtml();
}

Ekran görüntüsü,
GetHtml

Column = Üstte gördüğünüz gibi kolon adları kendiliğinden sıralı olarak gelirler.Column özelliğini kullanarak istediğimiz sırada kolon adlarını düzenleyebiliriz.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model);
    @Tablo.GetHtml(
    columns: Tablo.Columns(
    Tablo.Column("ID"),
    Tablo.Column("Adi"),
    Tablo.Column("Soyadi"),
    Tablo.Column("EPosta")
    )
    );
}

canPage – rowsPerPage = “canPage” Sayfalamayı açıp kapatmaya yarar.”rowsPerPage” her sayfada kaç veri görüntüleneceği ayarlanır.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model, canPage: true, rowsPerPage: 1);
    @Tablo.GetHtml();
}

Yukarıdaki kodu incelerseniz eğer, her sayfada 1 veri gösterilmek şartıyla sayfalama işlemi yapılacaktır.
Ekran görüntüsü,
canPage-RowsPerPage

Pager = Sayfalama işlemi yapıldığında, sayfalama linklerinin özelliklerini belirlememize yarar.
Prototipi aşağıdaki gibidir.

    WebGrid Tablo = new WebGrid();
    Tablo.Pager(WebGridPagerModes mode, string firstText, string previousText, string nextText, string lastText, int numreicLinksCount);
  • WebGridPagerModes = Sayfalama işleminin nasıl gerçekleşeceği belirlenir.Aşağıdaki değerleri alabilir,
    FirstLast : Sadece ilk ve son sayfa linkleri görüntülenir.
    NextPrevious : Sadece önceki ve sonraki sayfa linkleri görüntülenir.
    Numeric : Sadece sayfa numaraları gösterilir.
    All : Yukarıdaki bütün özellikler gösterilir.
  • firstText= İlk sayfa yazısı.
  • previousText= Önceki sayfa yazısı.
  • nextText= Sonraki sayfa yazısı.
  • lastText= Son sayfa yazısı.
  • numericLinksCount= Sayfa numarası sayısı.

Şimdi bu özellikleri programatik olarak inceleyelim.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model, canPage: true, rowsPerPage: 1);
    @Tablo.Pager(WebGridPagerModes.All, "İlk Sayfa", "Önceki Sayfa", "Sonraki Sayfa", "Son Sayfa");
    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column("ID"), Tablo.Column("Adi"), Tablo.Column("Soyadi"), Tablo.Column("EPosta")));
}

Ekran görüntüsü,
Pager

DefaultSort = Varsayılan sıralama işleminin hangi kolona göre yapılacağını belirtiriz.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model, defaultSort: "ID");
    @Tablo.Pager(WebGridPagerModes.All, "İlk Sayfa", "Önceki Sayfa", "Sonraki Sayfa", "Son Sayfa",1);
    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column("ID"), Tablo.Column("Adi"), Tablo.Column("Soyadi"), Tablo.Column("EPosta")));
}

SortColumn = WebGrid nesnemizde sıralama işleminin yapıldığı kolon adını geri döndürür.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model, defaultSort: "ID");
    @Tablo.Pager(WebGridPagerModes.All, "İlk Sayfa", "Önceki Sayfa", "Sonraki Sayfa", "Son Sayfa",1);
    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column("ID"), Tablo.Column("Adi"), Tablo.Column("Soyadi"), Tablo.Column("EPosta")));
    @Tablo.SortColumn
}

Yukarıdaki kod bloğunu incelerseniz eğer @Tablo.SortColumn kodu sayesinde sıralama yapılan kolon adı geri dönecektir.

SortDirection = Verileri büyükten küçüğe ya da küçükten büyüğe sıralamayı ayarlayabiliriz.
İkitane özellik almaktadır.
Ascending = Küçükten büyüğe sıralar.
Descending = Büyükten küçüğe sıralar.

Row.Count = WebGrid nesnemizdeki toplam veri sayısını verir.

@{
    ViewBag.Title = "Index";
}

@{
    WebGrid Tablo = new WebGrid(Model, defaultSort: "ID");
    @Tablo.Pager(WebGridPagerModes.All, "İlk Sayfa", "Önceki Sayfa", "Sonraki Sayfa", "Son Sayfa", 1);
    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column("ID"), Tablo.Column("Adi"), Tablo.Column("Soyadi"), Tablo.Column("EPosta")));    
}
<br />
@Html.Label("lblToplamVeri", "Toplam veri sayısı :" + Tablo.Rows.Count.ToString())

Ekran görüntüsü,
verisayisi

Asp.NET MVC 4.0 versiyonuyla gelen WebGrid nesnemizin özelliklerini ve metodlarını incelemiş olduk.Çok detaya inmesekte genel bir gözlem sayesinde nesnenin kullanılabilirliğinden az çok fikrimiz olmuştur.

Evet..Sanırım aynı şeyleri düşünüyor aynı isyanı basıyoruz.”Ulan nerede RowCommand, RowDataBound ,RowEditing eventları, nerede GridView ruhu, nerde bu Microsoft” diye haykırıyoruz 🙂

Ama gerçekler acıdır.Bir kere MVC event mantığıyla çalışmadığından dolayı bu haykırışların ardından direkt 1 – 0 yenilgiyle suskunluğa devam ediyoruz 🙂

Neyse fazla edebiyata bağlayıp can sıkmak istemem..
Umarım birşeyler katabilmişimdir..
Bir sonraki yazımda görüşmek üzere..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. kurtuluş dedi ki:

    merhaba webgrid sql server dan veri çekiyorum çektiğim verinin satırlarını tıklanabilir ve üzereinde mouse durduğunda zemin rengini değiştirmek istiyorum ancak bir türlü yapamadım bu konu hakkında yardımcı olabilirmisiniz

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir